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