yocto 編譯C程序


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程序,成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM