交叉编译器找不到头文件
作者:互联网
今天遇到了交叉编译找不到头文件的问题,解决方法如下:
- 首先,已知include <>的会在安装编译器时指定的路径下去寻找该头文件,include ""则会在源文件所在路径寻找。但由于头文件之间调用关系复杂,仅仅复制stdio.h到当前路径并且将<>换为include “”解决不了问题
- 最后解决方法是将/usr/include/下的所有头文件都复制到了编译器寻找头文件的路径下
echo 'main(){}' | arm-poky-linux-gnueabi-gcc -E -v - //注意,结尾就是一个-,并不是缺失了元素
- 首先使用上述命令,获取交叉编译器搜索头文件的默认路径(下方只是节选,请自行找到该段):
#include <...> search starts here: /opt/fsl-imx-x11/4.1.15-2.0.1/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include /opt/fsl-imx-x11/4.1.15-2.0.1/sysroots/x86_64-pokysdk-linux/usr/lib/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/5.3.0/include-fixed End of search list.
- 接下来就是cp /usr/include/. /opt/fsl-......省略 -r,就ok了
- 补充:官方头文件的搜索顺序为:通过GCC参数-I指定的目录;通过环境变量C_INCLUDE_PATH指定的目录;编译器的默认目录。搜索规则是,当不同目录下存在相同的头文件时,先搜到哪个就使用哪个
标签:头文件,交叉,gnueabi,编译器,linux,include,arm 来源: https://www.cnblogs.com/wbzhu13/p/15047272.html