yocto 编译C程序

mac2022-06-30  93

1. 找到编译器位置所在(相关设置参考/opt/poky/1.7/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi文件)

  poky安装在/opt目录下,编译器目录:/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueab/

2. 将编译器目录添加如环境变量

  vi ~/.bashrc

  在最后加入

  PATH=$PATH:/opt/poky/1.7/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi

  export PATH

  使路径生效

  sourec ~/.bashrc

3. 编写Makefile

  编写hello world程序。

  编写Makefile

1 CC=arm-poky-linux-gnueabi-gcc -march=armv7-a -mthumb-interwork -mfloat-abi=hard -mfpu=neon -mtune=cortex-a9 2 CFLAGS= -O2 -pipe -g -feliminate-unused-debug-types 3 LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed 4 EXEC = hello 5 OBJS = hello.o 6 7 all:$(EXEC) 8 9 $(EXEC):$(OBJS) 10 $(CC) $(LDFLAGS) -o $@ $(OBJS) 11 12 clean: 13 rm -f $(EXEC) *.elf *.gdb *.o

 

4. 出现问题

  开发板上执行生成的hello可执行程序提示: -sh: ./hello: not found

  使用arm-linux-gnueabihf-readelf -d hello 命令查看动态链接库情况,显示只使用了 libc.so.6 这个动态库

  查看开发板根文件系/lib文件夹,发现有动态库存在。

  网上说可能是 2个动态库 版本相差太多造成的,所以需要静态编译(在编译选项中加入-static即可)hello程序。

  开发板上再次执行hello程序,成功。

转载于:https://www.cnblogs.com/emlslxl/p/5611400.html

最新回复(0)