由于编译器经常变换的原因,在移植编译一些程序时会出现如题所示指令非法的问题。一般而言是由于目标板的文件系统中没有编译器环境中的动态库而造成的。可以通过file命令查看该目标文件的属性 ,可以观察到编译该文件所使用的编译器的具体设置。
我们又经常要求代码的可移植性,因此在编译时尽可能的选择静态链接。虽然这样做意味着目标代码变得很大。
选择静态链接还是动态链接一般采用在makefile中标明:
LDFLAGS = -rdynamic #表示链接动态库
LDFLAGS = -static #表示链接静态库
同时,还要在Makefile文件中的目标文件后加上该链接条件,例如
spi:
$(CROSS)gcc -o spi $(LDFLAGS) spi.c
阅读(1880) | 评论(0) | 转发(0) |