Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在服务器上安装第二个gcc_Linux_Gcc_Centos - Fatal编程技术网

Linux 在服务器上安装第二个gcc

Linux 在服务器上安装第二个gcc,linux,gcc,centos,Linux,Gcc,Centos,我有安装了4.8.2 gcc的centos服务器。现在我想在同一台服务器上安装4.8.5 gcc。要求是我需要两个gcc在同一台服务器上。如何在服务器上安装4.8.5 gcc?我认为最好的方法是使用Docker。除非CentOS有这样的设备,否则任何其他方法都可能是相当痛苦的。您可以尝试此容器,但未指定其版本 这是4.8版的dockerfile dockerfile,也许您可以使用4.8.5版: 如果这些都不起作用,只需获取包含此版本软件包的操作系统的容器并安装即可。请记住,您需要进一步的步骤来

我有安装了4.8.2 gcc的centos服务器。现在我想在同一台服务器上安装4.8.5 gcc。要求是我需要两个gcc在同一台服务器上。如何在服务器上安装4.8.5 gcc?

我认为最好的方法是使用Docker。除非CentOS有这样的设备,否则任何其他方法都可能是相当痛苦的。您可以尝试此容器,但未指定其版本

这是4.8版的dockerfile dockerfile,也许您可以使用4.8.5版:

如果这些都不起作用,只需获取包含此版本软件包的操作系统的容器并安装即可。请记住,您需要进一步的步骤来保存图像的状态。我希望你不必编译它。除非有正确的工具链,否则编译GCC很糟糕

请记住,容器不是持久的,因此包含源的目录必须单独附加。编译它们的命令行如下所示:

docker run -u root -it -v /local/path/to/source:/mounting/point/in/container --rm  \
    name-of-container:version -w /mounting/point/in/container /bin/bash -c \
    "make clean && make; chown -R 1000:1000 ."

我会考虑使用环境模块:

在我们的系统上,我们安装了相当多的编译器,可以通过类似于:module add gcc/6.2.0的命令在它们之间轻松切换

管理员提供的一般设置包括:

包含模块文件的两个目录,这些文件是文本文件,包含更改相关shell搜索路径所需的指令/例如,sw/RedHat-7-x86_64/通用/模块 实际软件安装到的相应目录/sw/RedHat-7-x86_64/通用/本地 目录按软件/版本组织。因此,对于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和friends的模块文件,每个软件包都是使用configure/cmake/which调用安装的,其中包括安装前缀/opt/local/stow/$package。在gcc/6.2.0的情况下,这个调用大致如下:./configure-prefix=/opt/local/stow/gcc-6.2.0

可以使模块文件非常详细;因此,我们有一些可以自动检测可执行目录、库、手动/信息页面、标题、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
}

查看GCC常见问题解答。您可以同时安装任意多个版本的GCC。。只要使用程序后缀和隐藏位置。请看这个例子