非root权限:源码安装gcc和cmake、openssl
一、安装cmake
1、下载cmake
下载地址:https://cmake.org/filestar -zxvf cmake-3.19.8.tar.gz cd cmake-3.19.8/ ./configure --prefix=$HOME/anyDirectory
没有sudo权限,cannot find openssl; install cmake cannot find openssl, without sudo
(1)修改CMakeLists.txt,在其中添加set(CMAKE_USE_OPENSSL OFF),可以直接添加到文件首行, 这里具体位置应该没有要求。用于解决没有openssl的问题
(2)非root权限安装openssl
2、编译安装及设置环境变量
i、编译安装
make make install
ii、设置环境变量
vim ~/.bashrc export PATH="$HOME/anyDirectory/bin:$PATH" source ~/.bashrc
iii、检查
cmake --version
3、configure出错
The C++ compiler does not support C++11 (e.g. std::unique_ptr)
linux 操作系统下,当cmake源码所在位置为挂载盘(mount),且挂载盘位于不同的服务器,此时如果出现挂载盘服务器与当前服务器时间不同步,编译cmake源码则会报上述错误。
解决办法:将cmake源码放置在非挂载盘
二、安装gcc
目前,GCC可用于编译C/C、FORTRAN、JAVA、OBJC和ADA等语言的程序,并可根据需要选择支持安装的语言。我安装的是另一个目录下,如果以后想卸载,直接删除那个目录就可以了。
1、下载安装包
gcc有三个依赖软件包:gmp、mpfr、mpc也需要安装。
gcc下载地址:http://ftp.gnu.org/gnu/gcc/
GMP下载地址:https://ftp.gnu.org/gnu/gmp/
mpfr下载地址:https://ftp.gnu.org/gnu/mpfr/
mpc下载地址:https://ftp.gnu.org/gnu/mpc/
【注意】:GCC 源码里自带脚本能够轻松下载依赖包,执行【./contrib/download_prerequisites】
若是自动安装成功,会有以下输出:
【All prerequisites downloaded successfully.】
2、安装gmp、mpfr、mpc依赖包
i、安装GMP
tar -jxvf gmp-6.2.0.tar.bz2 cd gmp-6.2.0/ ./configure --prefix=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 make make install
ii、安装mpfr
tar -zxvf mpfr-4.1.0.tar.gz cd mpfr-4.1.0/ ./configure --prefix=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ --with-gmp=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 make make install
iii、安装mpc
tar -zxvf mpc-1.2.0.tar.gz cd mpc-1.2.0/ ./configure --prefix=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ --with-gmp=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ --with-mpfr=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 make make installs
iv、设置库路径
gcc=/BIGDATA2/nscc_sci_1/xujb/gcc
export LD_LIBRARY_PATH=${gcc}/lib:${gcc}/lib64:$LD_LIBRARY_PATH
【注意】:三个依赖包安装完成后设置LD_LIBRARY_PATH库路径很重要,如果不指定,gcc在make时会出奇奇怪怪的错误
3、安装gcc
./configure --prefix=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ --with-gmp=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ --with-mpfr=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ --with-mpc=/BIGDATA2/nscc_sci_1/xujb/apps/gcc-11.2.0 \ -enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto \ -disable-multilib
记得加上后面三个依赖项,否则会出刚开始出现的错误的。然后安装
------------------make的时间比较长------------------
make make install make distclean // 清除
4、解决错误
错误1:找不到libmpfr.so.6(将上面依赖包的库路径设置后一般会解决掉)

https://altlinux.pkgs.org/p10/classic-x86_64/libmpfr6-4.1.0-alt1.x86_64.rpm.html 

然后将这两个文件上传至/usr/lib下,再运行命令:mv libmpfr.so.6.0.2 libmpfr.so.6 后,重新编译,程序便执行无误!
cp libmpfr.so.6.1.0 libmpfr.so.6
错误2:error while loading shared libraries: /lib/libmpfr.so.6: file too short
解决办法:更改配置文件
一般安装目录在:/usr/local/lib
配置文件在:/etc/ld.so.conf文件中
将该目录加入到共享库的配置文件中
将动态库文件加入配置:执行vi /etc/ld.so.conf,在"include ld.so.conf.d/*.conf"下方增加"/usr/local/lib"。
保存后,在命令行终端执行:
/sbin/ldconfig -v ldconfig
其作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新搜索路径,需要运行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库。
错误3:../.././libgfortran/kinds-override.h:40:5: 错误:#error "Where has __float128 gone?"

解决办法:清空环境变量LD_LIBRARY_PATH,PATH,C_INCLUDE_PATH,CPATH,每个环境变量按需设置
仔细核对,避免icc和gcc的header,lib相互污染。
5、设置环境变量并检查gcc版本
i、添加环境变量
vim ~/.bashrc
gcc=/BIGDATA2/nscc_sci_1/xujb/gcc
export PATH=${gcc}/bin:$PATH
export LD_LIBRARY_PATH=${gcc}/lib:${gcc}/lib64:$LD_LIBRARY_PATH
source ~/.bashrc
ii、查看gcc版本,确定是否安装成功
gcc --version

三、降版本安装gcc
例如gcc-8.4.1编译安装gcc-4.8.4
详情查看下面两篇解决方法:
1、centos8 安装gcc4.8.5/g++4.8.5【实测经验】
2、2021-04-13 densepose配置中 gcc 4.9.2安装问题记录(二)
四、安装openssl
1、下载地址:
https://www.openssl.org/source/old/
2、解压安装
tar -zxvf openssl-1.1.1s.tar.gz cd openssl-1.1.1s/ ./config --prefix=/home/export/online1/mdt00/systest/swpytorch/xujb/app_install/openssl make -j8 && make install
3、配置环境
export OPENSSL_ROOT_DIR=$HOME/online/xujb/app_install/openssl //export OPENSSL_LIBRARIES=$HOME/online/xujb/app_install/openssl/lib/ export PATH=$HOME/online/xujb/app_install/openssl/bin:$PATH //export LD_LIBRARY_PATH=$HOME/online/xujb/app_install/openssl/lib:$LD_LIBRARY_PATH

结束。
