非root权限:源码安装gcc和cmake、openssl

一、安装cmake 

1、下载cmake

下载地址:https://cmake.org/files 
tar -zxvf cmake-3.19.8.tar.gz
cd cmake-3.19.8/
./configure --prefix=$HOME/anyDirectory
其中$HOME是指向你该用户的root路径
没有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
mpfr和mpc的安装过程也是一样的,但在安装过程中必须添加依赖关系

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

 

结束。

 

posted @ 2022-06-20 16:34  惊小呆  阅读(871)  评论(0编辑  收藏  举报