- 积分
- 938
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-9-1
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 poiuy420 于 2019-7-17 14:05 编辑
最近在安装模式的时候发现有些模式要求到GNU版本已经高于4.4.6了,而且需求的MPI版本也相应提升到了MPICH2以上,但集群也不会为了我一个人就升级GCC及MPICH。所以,作为一个非root用户,只能在自己的目录下面源码安装GCC和MPICH了(羡慕一波中科的天河用户),折腾许久,写些心得分享给各位。
第一步. 获取GCC源码
linux下源码安装的最好方法就是官网,网上的各种攻略也永远赶不上官网的document来的准确。
GCC安装的官网:https://gcc.gnu.org/install/
GCC安装的wiki:https://gcc.gnu.org/wiki/InstallingGCC
获取GCC源码的地址:http://ftp.gnu.org/gnu/gcc/
- wget http://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2
复制代码
另外一提,很多源码安装的帖子发的比较早,都是通过centos的网站获取的,打开链接一看最高版本就到4.8,附上网址:http://vault.centos.org/7.0.1406/os/x86_64/Packages/
第二步. 安装GCC
安装GCC需要依赖三个库:GMP, MPFR 和 MPC,只需要在GCC目录下运行命令
- ./contrib/download_prerequisites
复制代码 就可以自动下载这三个组件,这里最好是按照官方文档来进行安装,而且需要深入检查的话有官方提供的test代码。好多的教程攻略都是一顿wget获取依赖库的源码,手动进行各种配置和添加环境变量,纯粹是走冤枉路,官网告诉你其实只是一个命令的事情。
下面进行编译配置选项,配置之前有一点很重要!安装GCC不能在它的源码目录下直接配置,需要在它的目录下新建一个文件夹,然后进入这个文件夹配置并编译安装,官网给这个文件夹命名为objdir,不知道其他名字行不行。其实不知道不能在源码目录下直接配置也没事,在你配置的过程中会报错,提醒你需要在其他位置配置
- mkdir objdir
- cd objdir
- ../configure --disable-checking --enable-languages=c,c++,fortran --disable-multilib --prefix=/path/to/install/gcc-5.4 --enable-threads=posix
- make -j && make install
复制代码 这里/path/to/install/gcc-5.4是你自己定义要安装GCC的目录。
其中make -j是无限制并行make的意思,加速你编译的速度,毕竟有的教程上说能make上一天(没有考证过,不过确实很慢),如果想限制使用核心数可使用 在languages下需要什么语言添加什么语言即可,常见的气象模式应该用到上面这3个就可以了,官网有详细的列表,如下
--enable-languages=lang1,lang2,…
Specify that only a particular subset of compilers and their runtime libraries should be built. For a list of valid values for langN you can issue the following command in the gcc directory of your GCC source tree:
grep ^language= */config-lang.in
Currently, you can use any of the following: all, default, ada, c, c++, d, fortran, go, jit, lto, objc, obj-c++. Building the Ada compiler has special requirements, see below. If you do not pass this flag, or specify the option default, then the default languages available in the gcc sub-tree will be configured. Ada, D, Go, Jit, and Objective-C++ are not default languages. LTO is not a default language, but is built by default because --enable-lto is enabled by default. The other languages are default languages. If all is specified, then all available languages are built. An exception is jit language, which requires --enable-host-shared to be included with all.
而--disable-multilib如果不添加我这里会报错,并且也提示你需要添加这个命令,具体详见官网。
最后添加一下环境变量
- export PATH=/path/to/install/gcc-5.4/bin:$PATH
- export LD_LIBRARY_PATH=/path/to/install/gcc-5.4/lib/:/path/to/install/gcc-5.4/lib64:$LD_LIBRARY_PATH
复制代码
Tips:如果在configure的时候报上数十行(没数,也可能上百行)的error,向上翻到最开始的报错内容为
- error: Unable to find a suitable type for HOST_WIDE_INT
复制代码 说明你所在的集群可能会有宏定义的冲突,需要重置下相关环境变量(感谢http://www.funcwj.cn/2017/05/28/gcc-update/的解释及解决方案)
- unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE
复制代码
第三步. 获取MPICH及安装
MPI支持并不仅限于MPICH,而且可能现在用OpenMPI的更多一点,获取源码的途径还是建议官网https://www.mpich.org/.
安装过程以MPICH-3.2举例
- tar xzvf /path/to/your/mpich_package/mpich-3.2.tar.gz
- cd mpich-3.2
- export CC=gcc
- export CXX=g++
- export F77=gfortran
- export FC=gfortran
- unset F90 # 很多集群有这个问题,在此标注
- unset F90FLAGS
- ./configure --prefix=/path/to/your/mpich --disable-shared
- make
- make check
- make install
- export PATH=/path/to/your/mpich/bin:$PATH
复制代码 其中 /path/to/your/mpich_package是安装包的路径,/path/to/your/mpich/是MPICH安装到的目录。
另外有一个小tips,在第二步中设定LD_LIBRARY_PATH时,如果没有/path/to/install/gcc-5.4/lib64的路径,下面安装MPICH时会报错,
- Unable to configure with Fortran support because configure could not determine the size of a Fortran INTEGER. Consider setting CROSS_F77_SIZEOF_INTEGER to the length in bytes of a Fortran INTEGER]
复制代码 谷歌之基本告诉你如果不用fortran请禁用它或者CPP=cpp之类的答案,其实是缺少了这个路径会导致gfortran无法工作,写个最简单的hello world程序用个gfortran能运行出来a.out,但是运行./a.out时会报错
- ./a.out: error while loading shared libraries: libquadmath.so.0: cannot open shared object file: No such file or directory
复制代码 (感谢mpich-discuss让我注意到了这个问题,它困扰了我将近2星期!)
|
|