g ++默认头包含列表

时间:2012-06-17 18:20:37

标签: linux gcc include g++ 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

在另一台Linux机器上执行完全相同的g ++二进制文件(lubuntu 12.10),我得到另一个不同的列表,元素更少:

#include <...> search starts here:
/opt/eldk-4.2/usr/bin/../lib/gcc/powerpc-linux/4.2.2/include

并且其中一些元素看起来很糟糕,如下所示:

ignoring nonexistent directory "/opt/ppc_4xx/usr/lib/gcc/powerpc-linux/includ../include/c++/4.2.2"

结果是第一个系统上的一些代码编译没有在第二个系统上编译,因为找不到一些头文件。

为什么会这样?这份清单来自哪里?谁负责建造它?是否可以轻松改变它?。

感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您可以通过设置环境变量将目录添加到默认搜索路径:

  • C_INCLUDE_PATH(对于C标头文件)
  • CPLUS_INCLUDE_PATH(对于C ++头文件)。

或者,you can create and edit specfile并将其置于G ++寻找它们的位置。您可以使用strace gcc检查路径。

Additional documentation on specfiles on GCC page.

答案 1 :(得分:0)

我使用ELDK 4.2确实遇到了一些问题。这很可能与ubuntu 12.04中发生变化的事情有关,因为在升级之前编译器在同一台计算机上运行良好。

我的问题似乎是忘记了/ usr

忽略不存在的目录“/opt/eldk-4.2 /../ ppc_82xx / usr / include”

应该是

/opt/eldk-4.2/usr /../ ppc_82xx的/ usr /包括

在ubuntu 11.10上完美运行。

我已尝试从ISO安装ELDK并从ubuntu 11.10中的工作版本复制安装