CentOS用户目录编译安装GCC4.8.2
1. 指定临时文件夹
在configure
的时候,发现由于系统根目录没有多余的空间, 无法使用temp目录(在其中创建临时文件),从而导致无法配置。 这里参考[1]的博客,通过指定环境变量TMPDIR
到用户目录下,起到替代系统的临时文件夹的作用:
1 | mkdir $HOME/local/tmp |
这样之后再次configure
,问题正确解决。
2. 编译安装gcc4.8.2
这里编译gcc是为了能够通过OpenFOAM-6的编译安装。首先选择了4.8.2版本进行测试, 在实际测试中出现了如下的问题, 可以看出提示中显示找不到gcc-4.8.5,难道要求的最低版本是4.8.5?
总结
由此可见,在编译之前,大致查看编译流程以及脚本文件是很有必要的,在此处就能避免踩雷, 绕开不必要的弯路
保险起见重现安装一个gcc-4.8.5。(他们的依赖文件版本是相同的,省事)
1 | [zhyang@K227 OpenFOAM]$ source $HOME/OpenFOAM/OpenFOAM-6/etc/bashrc WM_COMPILER_TYPE=ThirdParty WM_COMPILER=Gcc48 WM_MPLIB=OPENMPI FOAMY_HEX_MESH=yes |
gcc4.8.2不够,至少要4.8.5,下面重新安装gcc4.8.5。
3. 编译安装gcc4.8.5
3.1 源码下载及解压
1 | wget ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz |
3.2 依赖包下载、解压、移动
1 | cd gcc-4.8.5 |
在节点上是不能联网下载滴,所以需要手动下载好,然后传上去。该脚本的内容如下:
1 | MPFR=mpfr-2.4.2 |
实际调用的下载文件命令:
1 | wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2 |
将这三个文件下载后放到节点上的gcc-4.8.5/contrib/
目录中,然后修改download_prerequisites
的内容:
1 | MPFR=mpfr-2.4.2 |
然后调用./contrib/download_prerequisites
,完成解压操作。
这三个依赖也是需要编译的,参考 [2]的做法,将这三个解压后的文件夹移动到上一层, 就不需要分别单独编译了,而是在gcc编译的时候一起编译。(否则可以通过--with-mpc=MPC目录
, --with-mpfr=MPFR目录
,--with-gmp=GMP目录
)
1 | mv gmp-4.3.2/ ../gmp |
3.3 配置、编译、安装
执行configure
命令,生成makefile文件:
1 | ./configure --prefix=$HOME/local/gcc/gcc-build-4.8.5 --enable-checking=release --enable-languages=c,c++ --disable-multilib |
- 选项说明(具体的选项可以通过
configure --help
查看) [3]:
—prefix:指定gcc的安装路径,默认是在/usr/local
下,这里指定$HOME/local/gcc/gcc-build-4.8.5
;
—enable-languages:指定gcc能编译哪些语言,每种语言用都好隔开 (help中没有该选项?只有—enable-stage1-languages,默认为all);
—disable-multilib:默认gcc能在32位系统上编译得到64位程序, 或者在64位系统上编译成32位,加上该选项则禁用该功能(help中也没看到该选项)。
-
编译
1
2并行编译,按需调整数字
make -j4 -
安装
1
make install
最终编译得到的文件在$HOME/local/gcc/gcc-build-4.8.5
文件夹中, 其中二进制文件(相关软连接)在bin
子目录中, 相关库文件在lib
和lib4
子目录中, 通过添加环境变量,或使用绝对路径来调用。