当在/ usr / local之外的其他位置时,gcc的默认头路径

时间:2013-09-13 13:42:43

标签: c++ linux gcc c++11

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

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

在使用前缀选项构建gcc时,此路径是否会被硬编码?

2 个答案:

答案 0 :(得分:0)

通过查看gcc / g ++配置options,似乎--prefix选项用于控制构建工件的顶级安装目录。如果要指定/home/user1/newgcc/include以外的目录,可以使用--with-local-prefix选项。通常,--prefix参数可以合理地初始化所有后续路径参数。

答案 1 :(得分:0)

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

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

BUT:

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