5

在 Linux 机器( lubuntu 11.10 )中以详细模式使用 cross 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 机器(lubuntu 12.10)中执行相同的 g++ 二进制文件,我得到另一个不同的列表,其中元素更少:

#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"

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

为什么会这样?。这个列表来自哪里?谁负责建造它?是否可以轻松更改它?

任何帮助表示赞赏。

4

2 回答 2

5

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

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

或者,您可以创建和编辑规范文件并将其放置在 G++ 查找它们的位置。您可以使用 . 检查路径strace gcc

GCC 页面上有关规范文件的附加文档。

于 2012-06-17T18:33:22.387 回答
0

我在使用 ELDK 4.2 时遇到了一些问题。这很可能与 ubuntu 12.04 中的某些更改有关,因为在升级之前我已经让编译器在同一台计算机上运行良好。

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

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

它应该是

/opt/eldk-4.2/usr/../ppc_82xx/usr/include

这在 ubuntu 11.10 上完美运行。

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

于 2012-08-16T22:24:38.623 回答