Can anyone provide some pointers regarding compiling and linking user applications for the SheevaPlug's standard Ubuntu distribution?
Building applications on the actual target box does seem to work well enough. It is possible to find and install most libraries via APT, and build using the gcc/g++ on SheevaPlug. I use the -march=armv5te compiler flag.
However, cross-compiling on i386 Linux doesn't appear to work nearly as well. The Marvell-supplied cross EABI GCC 4.2 doesn't like the Ubuntu libraries, although it seems to be able to link with the shared libraries from the /lib of rootfsv1.0 (the "NFS" rootfs, very basic image/toolchain provided by Marvell mostly for kernel and rootfs flashing). The problem is, there are very few libraries in rootfsv1.0, and they are not the same as in Ubuntu distro. The cross linker totally refuses to see the shared libraries copied from the Ubuntu image.
Any ideas/suggestions would be greatly appreciated. Or is compiling for SheevaPlug on SheevaPlug the only way to go?
Have you tried Scratchbox?
Based on my experience the cross-compilation is not always supported by some software packages. Yes, building kernel using cross tollchain is OK and can save you a lot of compilation time. But this is not always true with others. I would use native build with small packages and Scratchbox for some massive builds.
Basically Marvell supplies optimized CodeSourcery toolchain and instructions for setting up Scratchbox on host PC for some development platforms. I believe the same should be done for SeevaPlug as well. You should be able to setup Scratchbox even without Marvell's optimized toolchain since several CodeSourcery toolchains are freely available on Scratchbox distribution site.
http://www.scratchbox.org/download/scratchbox-apophis/