linux - 选择linux上两个版本的gcc作为非管理员

标签 linux gcc fortran

这是我的问题。

  1. 我可以使用的linux集群(不是sudo用户)已安装gcc 4.2.1

    >which gcc
    >/usr/bin/gcc
    
  2. 出于某种原因,我需要更新版本的 gcc 。所以,我安装了 gcc 5.1.0/disk3/lly/lib/gcc-5.1.0 (由于权限限制,无法安装在/usr/bin)

  3. 我仍然想要旧版本 gcc 4.2.1 ,有时我想使用 gcc 5.1.0 。所以,我想找到一种安全的方式轻松切换它们。

我读过一些帖子,并在这里总结了一个简单的方法:

## Overlay the older one
## Newer gcc at /disk3/lly/lib/gcc-5.1.0--> For simplification, take $NEW for insted
cd /usr/bin
sudo rm gcc
sudo ln -s $NEW/bin/gcc gcc 

## Change back to gcc 4.2.1    
sudo ln -sf /usr/bin/gcc gcc   

但是我没有足够的权限,是否有其他方法可以实现我的目标?

最佳答案

简短回答:gcc 是针对硬编码的安装路径构建的。仅仅复制到其他地方是行不通的。您将需要从头开始重新编译 gcc(可能还有 binutils,甚至可能是匹配的 libc,如果它与安装的版本不同)。

您目前的主要问题是 $NEW/bin/gcc 不在您的 PATH 中。一旦你添加它就像

export PATH=${NEW}/bin/gcc:${PATH}

它将启动您的编译器前端版本,但您很快就会遇到一堆其他不容易解决的问题。

关于linux - 选择linux上两个版本的gcc作为非管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36248072/

相关文章:

c++ - 在树莓派中交叉编译的 qt 中构建应用程序时出错

gcc - 使用objcopy将二进制嵌入到elf中可能会导致对齐问题?

c++ - 在 Fortran 程序中使用 Boost 图形库 (BGL)

linux - 为什么 echo $JAVA_HOME 对于所有用户来说都不相同

linux - 保护包含空格的参数免受 eval 的影响

python - scp 文件的创建时间

linux - 如何使用 curl 命令行工具发布 LF?

debugging - 如何更改编译器包含在二进制文件的 DWARF 信息中的调试路径

memory - 是一个 Fortran 子例程,带有指定大小的虚拟参数线程安全数组

random - 如何在fortran 90中生成[0,5]范围内的整数随机数?