Subject: Re: problem executing simple app on ppc target running linux

From: Jerry Van Baren <[email-masked]>
Date: Fri, 28 Jan 2005 09:16:24 -0500

Vijay Padiyar wrote:
> Hi
> 
> I have a doubt regarding execution of applications on Linux.
> 
> I am developing applications to execute on an MPC8260 (PowerPC) target. I
> started off by building a toolchain for the target (using Kegel's
> crosstool).
> 
> The compiler created for my target bears the name
> 'powerpc-603e-linux-gnu-gcc.'
> 
> Then I built the Linux 2.6.10 kernel with this cross-compiler and got the
> executable image. I downloaded this image on the target and executed it
> successfully. I have now obtained the Linux command prompt.
> 
> I am using U-Boot 1.1.1 as the bootloader and am loading the JFFS2 partition
> on my Flash directly as the root drive, using the boot argument
> 'root=/dev/mtdblock3.'
> 
> The directory structure on my JFFS2 partition is as follows:
> 
> /bin (with Busybox)
> /dev
> /etc
> /home (for my programs)
> /lib (currently empty)
> /proc (empty)
> /sbin
> /tmp
> /usr - bin, sbin
> /var
> 
> Now, I built a simple "Hello, World!" application with my cross-compiler
> with the following command:
> 
> $ powerpc-603e-linux-gnu-gcc -o hello hello.c
> 
> When I try to execute the resulting file on my target from the Linux kernel
> prompt, I get a message saying:
> 
> /home # ./hello
> /bin/sh: hello: No such file or directory

It didn't find your hello program.  You didn't copy it over, it isn't 
executable, it is in the wrong directory, _______ (fill in the blank).

> When I compile the above file with my native gcc and execute on the target,
> I get a message saying:
> 
> /home # ./hello
> /bin/sh: hello: Line 1: Unexpected '(' in file (or something to that effect)

Running silly things give silly results.

> I know I can't execute apps built with gcc on the target. But why does it
> not work even when built with the cross-compiler?
> 
> Another thing is, how do I compile applications with shared libraries? And
> how do I know which specific shared library files I need to put in the /lib
> and /usr/lib folders on my target JFFS2 partition for the program to execute
> successfully?
> 
> Please give me some guidance. I'm a bit new to Linux.
> 
> Regards
> 
> Vijay Padiyar
> _______________________________________________
> Linuxppc-embedded mailing list
> [email-masked]
> https://ozlabs.org/mailman/listinfo/linuxppc-embedded

Wolfgang Denk <http://denx.de> has an Embedded Linux Development Toolkit 
(ELDK) that is a pre-packaged solution for cross compiling, target 
system ramdisks, etc. for 82xx (and 8xx and lots of others) targets.  He 
also has a " The DENX U-Boot and Linux Guide (DULG)" manual that tells 
you lots (perhaps even all :-) of what you need to know.

I have found ELDK and DULG are necessary and sufficient :-).  If you 
understand ELDK and DULG, you will probably be able to answer your own 
questions.

References:
<http://denx.de/e/index1.php?head=docs-head&main=docs&subnav=docs-subnav&logo=logo-se&mainnav=docsnav&bottom=bottom-se>
<http://www.denx.de/twiki/bin/view/DULG/Manual>

gvb