我有安装了 4.8.2 gcc 的 centos 服务器。现在我想在同一台服务器上安装 4.8.5 gcc。要求是我在同一台服务器上需要两个 gcc。如何继续在服务器上安装 4.8.5 gcc?
最佳答案
我会考虑使用环境模块:http://modules.sourceforge.net
在我们的系统上,我们安装了相当多的编译器,并且可以通过类似于以下命令很容易地在它们之间切换:module add gcc/6.2.0
。
我们的管理员提供的一般设置包括:
- 包含模块文件的几个目录,这些文件是包含更改相关 shell 搜索路径所需的指令的文本文件。 (例如/sw/RedHat-7-x86_64/common/modules)
- 安装实际软件的相应目录。 (/sw/RedHat-7-x86_64/common/local)
目录按软件/版本组织。因此对于 gcc/6.2.0 的情况,模块文件包括:
#%Module 1.0
module add gmp/6.1.1
module add mpfr/3.1.4
module add mpc/1.0.3
module add ppl/1.2
module add cloog/0.18.4
module add dejagnu/1.6
module add autogen/5.18.7
module add isl/0.16.1
prepend-path PATH /opt/local/stow/gcc-6.2.0/bin
prepend-path MANPATH /opt/local/stow/gcc-6.2.0/share/man
prepend-path CPATH /opt/local/stow/gcc-6.2.0/include
prepend-path LIBRARY_PATH /opt/local/stow/gcc-6.2.0/lib64:/opt/local/stow/gcc-6.2.0/lib
prepend-path LD_RUN_PATH /opt/local/stow/gcc-6.2.0/lib64:/opt/local/stow/gcc-6.2.0/lib
prepend-path LD_LIBRARY_PATH /opt/local/stow/gcc-6.2.0/lib64:/opt/local/stow/gcc-6.2.0/lib
还有 gmp 和 friend 的模块文件,每个软件包都是使用 configure/cmake/whatever 调用安装的,其中包括/opt/local/stow/$package 的安装前缀。 (对于 gcc/6.2.0,此调用类似于:./configure --prefix=/opt/local/stow/gcc-6.2.0
)
有可能使模块文件非常详尽;因此我们有一些自动检测可执行目录、库、手册/信息页、 header 、pkgconfig 指令、python 虚拟环境等的东西。这是一个生活在它自己的虚拟环境中的 python 包的例子:
#%Module
set NAME [module-info name]
set MODULE_FILE_AUTHOR "bob"
set MODULE_FILE_AUTHOR_EMAIL "bob@gmail.com"
set MODULE_FILE_MAINTAINER "bob@gmail.com"
module-whatis "labnote: Make a lab notebook!"
if [ module-info mode load ] {
if {! [info exists ::env(MODULE_PRE)] } {
setenv COMMON "/cbcb/sw/RedHat-7-x86_64/common"
setenv MODULE_PRE "$::env(COMMON)/local"
}
}
set DIR $::env(MODULE_PRE)/[module-info name]
### Add pre-requisites here
module add Python3/common/3.6.0
### Add extra variables here
### Define a simple help message
proc ModulesHelp { } {
global NAME MODULE_FILE_AUTHOR MODULE_FILE_AUTHOR_EMAIL MODULE_FILE_MAINTAINER
puts "The $NAME module file was installed by $MODULE_FILE_AUTHOR ($MODULE_FILE_AUTHOR_EMAIL)
and is maintained by $MODULE_FILE_MAINTAINER."
}
set is_module_rm [module-info mode remove]
###
# Add your executable to PATH.
###
if { [file isdirectory $DIR/bin] == 1} {
prepend-path PATH $DIR/bin
}
###
# Add an include directory
###
if { [file isdirectory $DIR/include] == 1} {
prepend-path CPATH $DIR/include
}
###
# Set up library paths
###
if { [file isdirectory $DIR/lib] == 1} {
prepend-path LIBRARY_PATH $DIR/lib
prepend-path LD_RUN_PATH $DIR/lib
}
###
# Python virtual environments
###
if { [file isfile $DIR/bin/activate] == 1} {
setenv VIRTUAL_ENV $DIR
}
关于linux - 在服务器上安装第二个 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49323245/