[yocto] RPi app built with SDK won't load

Paul D. DeRocco pderocco at ix.netcom.com
Sat Jul 1 18:07:43 PDT 2017


> From: Andrea Galbusera [mailto:gizero at gmail.com] 
> 
> Could you please post the exact source code of your test 
> program and the steps you take to (a) build the SDK and (b) 
> build your test executable? Is your running image a pretty 
> standard one (core-image-minimal, rpi-test-image or so) or do 
> your own with custom features? 

It did have some custom features, so I did a plain build of core-image-minimal using raspberrypi3 as the MACHINE. I also did a populate_sdk for it, and installed the SDK in /opt/poky/2.2.1-a32 by running the install script.

The test program test.c is just "int main(void) { return 0; }". I normally use Eclipse CDT to compile native programs, so I set up a cross project using the SDK, which involves a few manual settings, including telling it the tools are in /opt/poky/2.2.1-a32/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux, and adding a --sysroot to the command lines. The compiler command line came out as:

arm-poky-linux-gcc --sysroot=/opt/poky/2.2.1-a32/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi -O3 -Wall -c -mfloat-abi=hard -MMD -MP -MF"test.d" -MT"test.o" -o "test.o" "../test.c"

(without the line breaks). I had to add "-mfloat-abi-hard" to get it to link. The link command line was:

arm-poky-linux-gcc --sysroot=/opt/poky/2.2.1-a32/sysroots/cortexa7hf-neon-vfpv4-poky-linux-gnueabi -s -o "test" ./test.o   

(again, without the line breaks). After dd-ing the image to my SD card, I mounted it and manually copied the "test" program into its rootfs. When I stuck it in the RPi3 and ran it, I got

    -sh: ./test: not found

The shell in this case is busybox, so the error message is slightly different from bash.

I rechecked everything I had described before, analyzing the executable and comparing it to some working executable from the rootfs. There must be SOMETHING in my executable that the loader is barfing on, after it's successfully opened the file but before it starts looking for libraries. But it's an awfully small executable, so it's hard to imaging where that something is hiding.

-- 

Ciao,               Paul D. DeRocco
Paul                mailto:pderocco at ix.netcom.com




More information about the yocto mailing list