2

假设系统管理员在我构建软件的机器上提供了新版本的 gcc 编译器/some/path(所有类型的软件,包括开源、第三方工具、我自己的程序等):

我通常更新以下三个环境变量$PATH$LD_LIBRARY_PATH并且$MANPATH根据我的理解是与通用构建工具(例如,等)或脚本接口的标准autoconf做法cmake

setenv MY_GCC /some/path

setenv PATH $MY_GCC/bin:$PATH
setenv LD_LIBRARY_PATH $MY_GCC/lib64:$LD_LIBRARY_PATH
setenv MANPATH $MY_GCC/share/man:$MANPATH

在这里我有一个快速的问题:真的有理由更新LD_LIBRARY_PATH(为什么程序会链接到编译器?)。

但更一般地说,在安装新编译器时应该更新哪些环境变量以保证正确的构建环境

4

1 回答 1

1

这取决于。

通常,您不需要设置任何环境变量,除了PATH有一个适当的构建环境(如果您使用 IDE,甚至可能没有必要,尽管您可能必须告诉 IDE 在哪里可以找到编译器,如果它住在一个意想不到的非标准位置)。

如果您使用类似(或 CMAKE,或任何类似的东西),特别是如果您在系统上有多个编译器版本(或autoconf交叉编译器),您可能希望将变量设置为合理的默认值,以确保(和如果您想要其他东西,请相应地修改它们)。 尽管如果您的编译器将其目标附加到其名称(如在大多数构建中),这可能不是必需的。至少,它对我来说非常好,没有做任何特别的事情。CCCXX

如果英语不是您的母语并且您的 GCC 是在语言环境支持下构建的(如果您问我,这是有史以来最愚蠢的想法),您可能希望设置LC_ALL为“C”。否则,如果您在论坛上询问编译器问题,您会注意到您的“不可读”错误消息不会为您提供太多帮助。

如果除了普通硬盘之外您还有一个 ramdisk(或 SSD),但您的项目位于普通硬盘上,您可能需要设置TMPDIR(即使您总是使用 编译-pipe,因为这有时似乎会出于某种原因创建临时文件我不明白)。

如果您有要使用的库的非标准位置,则可以设置LIBRARY_PATH,但我不建议这样做。最好有您的构建脚本(或 IDE 中的项目设置),以便将这些位置提供给命令行上的链接器(或通过configure类似的东西传递--with-foo-path=...)。这保证了您的项目可以在任何地方和任何地方构建,而无需其他人使用一些未知的、晦涩的环境变量来表演魔术。也是如此C_INCLUDE_PATH

于 2013-03-13T11:07:40.343 回答