我最近构建了一个旧版本的 GCC 并将其安装在我的主目录中 (spec.~/local/gcc-5.3.0
)。但是,我只需要这个编译器用于 CUDA 项目,其余时间将使用系统编译器 (GCC 6.2.1)。所以,我想我需要找到一种方法在需要时在它们之间切换,并且以一种还可以更改库并适当包含路径的方式。
我知道 update-alternatives
是一种方法,但它似乎需要设置 root 权限,而我没有。
下一个最好的办法可能是在 .bashrc
中编写一个 shell 函数来确保以下内容:
每次调用在系统和本地gcc之间切换
每当进行切换时,它都会调整路径,以便在选择本地 gcc 时,它首先查找自己安装的头文件和库,然后再查找系统路径,如
/usr/local/包括
或usr/local/lib
。以前的 answer建议修改LD_LIBRARY_PATH
就足够了,因为 GCC 安装“知道”它自己的头文件和静态库在哪里(我不确定它是否正确,我想我可能需要修改CPATH
等)。
以上是实现此目标的最佳方法吗?如果是这样,实现这样的功能应该设置什么路径?
最佳答案
Is the above the best way to achieve this? If so, what paths should I set while implementing such a function?
正如其他人所指出的,PATH
和 LD_LIBRARY_PATH
是强制性的。您还可以更新 MANPATH
以确保完整性。
与其在 .bashrc
中重新发明轮子,我建议使用一个鲜为人知但非常方便的模块化 Environment Modules专为此特定目的而设计。您可以像这样使用它们(一旦您为 gcc/3.1.1 设置了配置):
$ module load gcc/3.1.1
$ which gcc
/usr/local/gcc/3.1.1/linux/bin/gcc
$ module unload gcc
$ which gcc
gcc not found
关于c - 在不同的 GCC 版本之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41214602/