重庆思庄Oracle、Redhat认证学习论坛
标题:
rhel9.1 gcc 12.2 编译
[打印本页]
作者:
郑全
时间:
2022-11-21 17:44
标题:
rhel9.1 gcc 12.2 编译
本帖最后由 郑全 于 2022-11-21 17:57 编辑
趁疫情封闭期间,想做一个切底的opengauss 数据库的源码安装,包含GCC的安装,发现GCC并不好编译,她需要其他软件的依赖的和对应的版本,试了几天,终于通过了,
make 编译过程比较漫长,想试一下的朋友们,需要一点耐心哟。
以下是已经验证过可以正确编译安装的步骤给大家参考
以 redhat linux 9.1 系统,x86-64 架构,gcc12.2 版本为例 (其他版本的 gcc 也与此相同)。 Gcc 具体编译依赖 gmp isl mpc mpfr ,需要先编译这四个库。
GCC源码地址:
gcc
http://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-12.2.0.tar.gz
依赖软件地址如下:
gmp
http://ftp.gnu.org/gnu/gmp/gmp-6.2.1.tar.xz
mpfr
http://ftp.gnu.org/gnu/mpfr/mpfr-4.1.1.tar.gz
mpc
http://ftp.gnu.org/gnu/mpc/mpc-1.2.1.tar.gz
isl
https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.24.tar.bz2
1.上传软件到 /root
将这几个软件上传到服务器上面,按照如下顺序进行编译
[root@ogserver ~]# pwd
/root
[root@ogserver ~]# ls -ltr
total 159124
-rw-r--r--. 1 root root 2027316 Nov 20 10:46 gmp-6.2.1.tar.xz
-rw-r--r--. 1 root root 838731 Nov 20 10:53 mpc-1.2.1.tar.gz
-rw-r--r--. 1 root root 2261594 Nov 20 10:54 isl-0.24.tar.bz2
-rw-r--r--. 1 root root 149729936 Nov 20 10:57 gcc-12.2.0.tar.gz
-rw-r--r--. 1 root root 2127188 Nov 20 11:07 mpfr-4.1.1.tar.gz
2.建立编译后软件的目录
# mkdir -p /software/target/
3. 编译 gmp
解压:tar -xf gmp-6.2.1.tar.xz
编译C语言,需要gcc编译器,否则,编译 gmp会报错,同时,还需要m4
# yum -y install gcc m4
编译: prefix 路径可以自己指定,表示编译结果存放路径。
# cd gmp-6.2.1
# ./configure --prefix=/software/target/gmp
# make –j
# make install –j
4. 编译 mpfr
解压: tar –xf mpfr-4.1.1.tar.gz
编译: --prefix 路径自己指定,--with-gmp 路径为上一步 gmp 编译的 prefix 路径。下面与此相同。
# cd mpfr-4.1.1
# ./configure --prefix=/software/target/mpfr --with-gmp=/software/target/gmp
# make –j
# make install -j
5. 编译 mpc
解压: tar –xf mpc-1.2.1.tar.gz
编译:
# cd mpc-1.2.1
# ./configure --prefix=/usr2/zxb/compile/target/mpc --with-gmp=/usr2/zxb/compile/target/gmp --with-mpfr=/usr2/zxb/compile/target/mpfr
# make –j
# make install -j
6. 编译 isl
解压: tar –xf isl-0.24.tar.bz2
注意:直接解压要报错,需要先安装 bzip2
# yum install bzip2
编译:
# cd isl-0.24
# ./configure --prefix=/usr2/zxb/compile/target/isl --with-gmp-prefix=/usr2/zxb/compile/target/gmp
# make –j
# make install -j
7. 编译 gcc
必须把前面gcc 需要的依赖项都安装上,才能编译安装GCC
# yum install gcc-c++ glibc-devel
导入环境变量
# export LD_LIBRARY_PATH=/usr2/zxb/compile/target/gmp/lib:/usr2/zxb/compile/target/mpfr/lib:/usr2/zxb/compile/target/mpc/lib:/usr2/zxb/compile/target/isl/lib:${LD_LIBRARY_PATH}
# export C_INCLUDE_PATH=/usr2/zxb/compile/target/gmp/include:/usr2/zxb/compile/target/mpfr/include:/usr2/zxb/compile/target/mpc/include:/usr2/zxb/compile/target/isl/include:${C_INCLUDE_PATH}
环境变量中的路径,为上面编译的几个三方库各自的 prefix 路径。
解压 gcc
# tar -xvf gcc-12.2.0.tar.gz
编译 gcc
# cd gcc-12.2.0
# mkdir build --
#不能在source目录下, configure必须在上一层的目录下
# cd build
# ../configure CFLAGS='-fstack-protector-strong -Wl,-z,noexecstack -Wl,-z,relro,-z,now ' \
--prefix=/software/target/gcc \
--with-gmp=/software/target/gmp \
--with-mpfr=/software/target/mpfr \
--with-mpc=/software/target/mpc \
--with-isl=/software/target/isl \
--disable-multilib --enable-languages=c,c++
-- 这步很快就完成,输出中,会看到下面的信息:
。。。
line 81: makeinfo: command not found
。。。
-- 这个不可以忽略。
# make --这一步,花了3小时
# make install
8.编译完后,确认
[root@ogserver ~]# ls -ltr /software/target/
total 0
drwxr-xr-x. 5 root root 45 Nov 20 23:29 gmp
drwxr-xr-x. 5 root root 45 Nov 20 23:33 mpfr
drwxr-xr-x. 5 root root 45 Nov 20 23:35 mpc
drwxr-xr-x. 4 root root 32 Nov 20 23:51 isl
drwxr-xr-x. 8 root root 84 Nov 21 04:51 gcc
# /software/target/gcc/bin/
gcc -v # 查看升级后的gcc版本信息,验证安装是否成功
[root@ogserver build]# /software/target/gcc/bin/gcc -v
Using built-in specs.
COLLECT_GCC=/software/target/gcc/bin/gcc
COLLECT_LTO_WRAPPER=/software/target/gcc/libexec/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure CFLAGS='-fstack-protector-strong -Wl,-z,noexecstack -Wl,-z,relro,-z,now ' --prefix=/software/target/gcc --with-gmp=/software/target/gmp -- with-mpfr=/software/target/mpfr --with-mpc=/software/target/mpc --with-isl=/software/target/isl --disable-multilib --enable-languages=c,c++
Thread model: posix
Supported LTO compression algorithms: zlib
gcc version
12.2.0
(GCC)
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2