c - 在不同的 GCC 版本之间切换

标签 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/包括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?

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

相关文章:

c# - 在程序中运行 gcc 的安全、跨平台方式

你能让一个递增的编译器常量吗?

字符数组赋值

linux - 设置虚拟主机后出现 403 错误

linux - 为什么 C99 提示存储大小?

c - gcc -Wtype-limits 与上限

c++ - 如何从 S 函数调用 matlab 变量?

c - 内存分配器宏解释

python - Python 系统调用失败

c++ - 为 AVR 编译 c++0x