I incorporated all the relevant symbols from
environment-setup-cortexa7hf-neon-vfpv4-poky-linux-gnueabi. I defined the
compilation command as ${CC} ${CFLAGS} and the linker command as ${LD}
${LDFLAGS}. Other Eclipse settings added -O3 -Wall -c to the compile, and -s to
the link.
When I did the build, the compile succeeded, but the link complained about
"-Wl,-O1" as an unrecognized option. I first tried eliminating the "-Wl,"
prefixes, but that gave me a "cannot find entry symbol _start" error. I put the
"-Wl," prefixes back, but changed the link command from
arm-poky-linux-gnueabi-ld to arm-poky-linux-gnueabi-gcc, and it linked okay,
but gave me the same runtime error I've been struggling with.
However, Lukasz put his finger on the problem when he wrote
> From: Lukasz Tekieli [mailto:[email protected]]
>
> it seems that if linker is called without -mfloat-abi=hard
> then the ld is set to /lib/ld-linux.so.3 instead of
> /lib/ld-linux-armhf.so.3 which is the correct one.
It turns out the correct way to run the linker is $CC $CFLAGS $LDFLAGS, not $LD
$LDFLAGS.
The reason this escaped me for all this time is that I was using
arm-poky-linux-gnueabi-objdump -x on the executable, and grepping for NEEDED to
find out what shared libraries were needed. The actual loader isn't listed in
this way. Using the -s option showed that the .interp section contained the
string /lib/ld-linux.so.3. Now it correctly shows /lib/ld-linux-armhf.so.3.
Thanks to all who looked into this for me.
--
Ciao, Paul D. DeRocco
Paul mailto:[email protected]
--
_______________________________________________
yocto mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/yocto