在不同的GCC版本之间切换

时间:2016-12-19 01:15:08

标签: c linux gcc cuda

我最近构建了一个旧版本的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等。)

以上是实现这一目标的最佳方法吗?如果是这样,我在实现这样的功能时应该设置哪些路径?

1 个答案:

答案 0 :(得分:1)

  

以上是实现这一目标的最佳方法吗?如果是这样,   在实现这样的功能时我应该设置哪些路径?

正如其他人所指出的那样,PATHLD_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