【发布时间】:2017-05-04 00:47:58
【问题描述】:
我最近构建了一个旧版本的 GCC 并将其安装在我的主目录中(规范~/local/gcc-5.3.0)。但是,我只需要为 CUDA 项目使用此编译器,其余时间将使用系统编译器 (GCC 6.2.1)。所以,我想我需要找到一种在需要时在这些之间切换的方法,并且以一种同时改变库并适当地包含路径的方式。
我知道update-alternatives 是这样做的一种方法,但它似乎需要设置 root 权限,而我没有。
下一个最好的办法可能是在 .bashrc 中编写一个 shell 函数,以确保以下内容:
每次调用都会在系统和本地 gcc 之间切换
1234563以前的answer 建议修改
LD_LIBRARY_PATH 就足够了,因为GCC 安装“知道”它自己的头文件和静态库在哪里(我不确定它是否正确,我想我可能需要修改@987654328 @ 等)。
以上是实现这一目标的最佳方法吗?如果是这样,在实现这样的功能时我应该设置哪些路径?
【问题讨论】:
-
我个人的方法不是很复杂:我有一个 shell 脚本,它只是将 CUDA bin 目录和匹配的 gcc bin 目录添加到 $PATH。实际上我有多个脚本来保存不同的 CUDA 版本。当我停止使用 CUDA 或想要切换到其他版本时,我会打开一个新的 shell。
-
你提到只将gcc的
bin目录添加到PATH。如果不是include目录,是不是也需要修改LD_LIBRARY_PATH? -
nvcc 和 gcc 都知道它们的库所在的位置,因此只需更改 $PATH 就足够了。
-
如果这只是用于nvcc,那么你可能只需要nvcc中的ccbin选项
-
CMake 不会轻易解决这个问题吗?