Mar*_*rda 5 linux gcc g++ include embedded-linux
在详细模式下在Linux机器(lubuntu 11.10)中使用交叉g ++进行编译时,我可以看到默认包含头目录的列表:
#include <...> search starts here:
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include
/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/powerpc-linux
/opt/eldk-4.2/ppc_4xx/usr/include/c++/4.2.2/backward
/opt/eldk-4.2/usr/../ppc_4xx/usr/include
Run Code Online (Sandbox Code Playgroud)
在另一台Linux机器上执行完全相同的g ++二进制文件(lubuntu 12.10),我得到另一个不同的列表,元素更少:
#include <...> search starts here:
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include
Run Code Online (Sandbox Code Playgroud)
并且其中一些元素看起来很糟糕,如下所示:
ignoring nonexistent directory "/opt/ppc_4xx/usr/lib/gcc/powerpc-linux/includ../include/c++/4.2.2"
Run Code Online (Sandbox Code Playgroud)
结果是第一个系统上的一些代码编译没有在第二个系统上编译,因为找不到某些头文件.
为什么会这样?这份清单来自哪里?谁负责建造它?是否可以轻松改变它?
任何帮助表示赞赏.
您可以通过设置环境变量将目录添加到默认搜索路径:
C_INCLUDE_PATH (对于C头文件) CPLUS_INCLUDE_PATH (对于C++头文件).或者,您可以创建和编辑specfile并将其放在G ++查找它们的位置.你可以检查路径strace gcc.