2017年7月12日 星期三

cross compiler的interpreter

通常corss compiler for ARM有可能都會用到arm-linux-gnueabihf-gcc or arm-linux-gnueabi-gcc,
是由 Linaro 公司基于GCC推出的的ARM交叉编譯的工具

cross compiler前,最好先確認目標板子的interpreter是什麼~
$ file hello 
hello: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=97943e1e425eadf112294e3fd26d10c5649b1d1b, with debug_info, not stripped
有可能是ld-linux.so.3, or ld-linux-armhf.so.3 or 其它
$ ls -alh /lib/ld*
lrwxrwxrwx 1 root root 30  6月 17  2017 /lib/ld-linux-armhf.so.3 -> arm-linux-gnueabihf/ld-2.19.so                                                                                                  
這片目標板,就是用arm-linux-gnueabihf,如上

x86的應該都是像下面這樣
$ ls -alh /lib/ld*
lrwxrwxrwx 1 root root 30  6月 17  2017 /lib/ld-linux.so.2 -> /lib32/ld-linux.so.2

如果弄混了,通常都不能執行
$ ./hello
sh: ./hello: not found


至於安裝arm-linux-gnueabihf,ubuntu通常用apt就行了
$ sudo apt-get install gcc-arm-linux-gnueabihf

手動安裝~載點:
a. 4.8-2013.12, 可以直接用的
b. 其它版本: 官方載點

gcc-linaro-armeb-linux-gnueabihf:  Big-endian
gcc-linaro-arm-linux-gnueabihf: Little-endian


LDFLAGS:指定include位置LIBS: 指定用lib, ex: -lm, -lasound
CFLAGS: C, 指定C include位置,ex: CFLAGS=-I/usr/include
CPPFLAGS: C++, 指定C++ include位置

沒有留言:

張貼留言