0

我想在我的 Linux 系统上安装最新的 gcc 来编译 C++11 代码。目前我们正在考虑将其安装在默认位置以外的位置,例如/home/user1/newgcc.

为此,我将使用 --prefix=/home/user1/newgcc 选项构建它。但是AFAIK,编译器在等中查找头文件/usr/local/include/usr/include由于它将安装在我的本地目录中,我该如何强制它在/home/user1/newgcc/include等中查找头文件?

在构建带有前缀选项的 gcc 时,这条路径会被硬编码吗?

4

2 回答 2

0

从查看 gcc/g++ 配置选项,似乎该--prefix选项用于控制构建工件的顶级安装目录。如果要指定 以外的目录/home/user1/newgcc/include,可以使用该--with-local-prefix选项。但总的来说,--prefix参数会明智地初始化所有后续路径参数。

于 2013-09-13T14:34:25.300 回答
0

如果您的机器上有多个用户,则不应将编译器安装到用户本地目录。如果您这样做,那么当动态链接器尝试从用户本地路径获取库并且其他用户无权访问此目录时,您稍后会遇到问题。

通常,附加软件应安装在系统的 /opt 中。我们为此使用 /opt/gcc-version/... 并且我们的构建盒上有很多旧的编译器。在编译你的源代码时,编译器知道在哪里可以找到合适的头文件。

但:

当您稍后在系统上运行您的 progs 时,您可能无法找到正确的动态库。您必须将它们添加到您的 ld.config 系统中。有时是一个文件,有时是一个包含很多子文件夹的目录。只需查看您的 ld.config 手册页即可了解该主题。

于 2013-09-13T15:26:30.667 回答