我最近构建了一个旧版本的GCC并将其安装在我的主目录(spec。~/local/gcc-5.3.0
)中。但是,我只需要这个编译器用于CUDA项目,并且将在其余时间使用系统编译器(GCC 6.2.1)。所以,我想我需要找到一种在需要时和在需要时切换它们的方法,并且还可以更改库并适当地包含路径。
我理解update-alternatives
是这样做的一种方法,但它似乎需要设置root权限,我没有。
下一个最好的事情可能是在.bashrc
中编写一个shell函数来确保以下内容:
每个呼叫在系统和本地gcc之间切换
每当进行切换时,它会调整路径,以便在选择本地gcc时,它首先查找自己安装的头文件和库,然后再查看/usr/local/include
或{{等系统路径1}}。之前的answer表明修改usr/local/lib
应该足够了,因为GCC安装“知道”它自己的头文件和静态库的位置(我不确定它是否正确,我以为我可能需要修改LD_LIBRARY_PATH
等。)
以上是实现这一目标的最佳方法吗?如果是这样,我在实现这样的功能时应该设置哪些路径?
答案 0 :(得分:1)
以上是实现这一目标的最佳方法吗?如果是这样, 在实现这样的功能时我应该设置哪些路径?
正如其他人所指出的那样,PATH
和LD_LIBRARY_PATH
是强制性的。您还可以更新MANPATH
以获取完整性。
我建议采用一种鲜为人知但非常方便且模块化Environment Modules的设计用于此特定目的,而不是重新发明.bashrc
中的轮子。你可以使用它们(一旦你为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