✨1.问题:
某些工具在Centos7上低版本的GCC和Glibc运行都会报错,只有升级GCC和Glibc才行
手动编译和安装
如果软件包管理器不提供您需要的版本,另一个选择是手动编译和安装。
🌟问题1:执行最后面的glibc的make报如下错误 为make版本太低 升级make 版本
checking for bison… bison checking version of bison… 3.0.4, ok checking if gcc is sufficient to build libc… yes checking for nm… nm checking for python3… python3 checking version of python3… 3.6.8, ok configure: error: *** These critical programs are missing or too old: make *** Check the INSTALL file for required versions.
✨安装 make
在浏览器或使用命令行工具(如 wget)下载指定版本的make。以下是使用 wget 在命令行下载make 4.2.1版本的示例:
wget http://ftp.gnu.org/gnu/make/make-4.2.1.tar.gz
🌟解压下载的文件:
tar -xzvf make-4.2.1.tar.gz
🌟进入解压后的目录:
cd make-4.2.1
🌟配置构建:
./configure --prefix=/usr/local
这里–prefix=/usr/local指定了安装位置,您可以根据需要来自定义这个路径,只要确保它不会覆盖系统默认的make工具。
🌟编译make:
make
🌟安装新编译的make:
sudo make install
这将安装make到您在./configure时指定的目录。
🌟最后,检查新版本的make是否正确安装:
/usr/local/bin/make --version
这应该会输出刚刚安装的4.2.1版本信息。
将make cp到/usr/bin 目录
✨安装GCC依赖库
🌟手动下载和安装库:
如果所需版本的库在您的包管理器中不可用,您需要手动下载、编译和安装这些库。您可以从GCC的基础组件页面获取源代码:
https://gcc.gnu.org/pub/gcc/infrastructure/
对于每个库,按照以下步骤进行:
🌟下载源码:
wget https://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
```
🌟解压源码:
tar -xvf gmp-6.1.0.tar.bz2
tar -xvf mpfr-4.1.0.tar.bz2
tar -xvf mpc-1.2.1.tar.gz
🌟配置、编译和安装每个库:
cd gmp-6.1.0
./configure --prefix=/usr/local --disable-shared --enable-static
make
sudo make install
cd ..cd mpfr-4.1.0
./configure --prefix=/usr/local --with-gmp=/usr/local --disable-shared --enable-static
make
sudo make install
cd ..cd mpc-1.2.1
./configure --prefix=/usr/local --with-gmp=/usr/local --with-mpfr=/usr/local --disable-shared --enable-static
make
sudo make install
cd ..
⚠️注意:上面使用了/usr/local作为安装路径以避免与系统包管理器提供的版本冲突,同时使用–disable-shared --enable-static选项编译为静态库以避免运行时搜索动态库的问题。
✨安装GCC
🌟下载gcc 10.2.1的源代码。您可以从GNU的官方FTP站点或一个近期的源码镜像站点获取源码:
wget https://ftp.gnu.org/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.gz
🌟解压源代码包:
tar -xzf gcc-10.2.0.tar.gz
cd gcc-10.2.0
🌟gcc构建过程建议建立一个单独的构建目录:
mkdir build
cd build
🌟配置构建环境。根据您的需要,这一步可能涉及多个配置选项。下面是一个基础的配置示例:
../configure --prefix=/usr/local/gcc-10.2.1 --enable-languages=c,c++ --disable-multilib --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local
这会设置安装路径为/usr/local/gcc-10.2.0,仅编译C和C++语言的支持,并禁用多库(如果您需要支持32位和64位兼容,不要包括–disable-multilib选项)。
🌟编译gcc。这一步会占用较长的时间,取决于您的系统性能 :
make -j$(nproc)
这里的-j$(nproc)部分会使编译过程使用所有可用的处理器核心,以加快编译进度。
🌟安装编译好的gcc:
sudo make install
如果安装步骤成功,gcc编译器的新版本将被安装到您在configure步骤中指定的路径。
🌟更新PATH变量以使用新版本的gcc:
export PATH=/usr/local/gcc-10.2.0/bin:$PATH
考虑将这行添加到您的.bashrc或.bash_profile中以便持续生效。
🌟确认新版本的gcc已正确安装:
gcc --version
🌟添加新路径到 LD_LIBRARY_PATH 环境变量:
您可以将此路径添加到 LD_LIBRARY_PATH 环境变量,以便运行程序时系统能够找到新版本的库。在你的终端输入以下命令或添加到您的 shell 配置文件(如 ~/.bashrc 或 ~/.bash_profile)中:
export LD_LIBRARY_PATH=/usr/local/gcc-10.2.0/lib64:$LD_LIBRARY_PATH
更新配置文件后,你需要执行 source ~/.bashrc 或重新登录使其生效。
更新动态链接器(ldconfig)的配置:
为了让这个更改对整个系统有效,您可以创建一个新的 ld.so.conf 文件或者给现有的添加内容,然后运行 ldconfig 来更新缓存。
🌟创建新的 ld.so.conf.d 配置文件:
echo '/usr/local/gcc-10.2.0/lib64' | sudo tee /etc/ld.so.conf.d/gcc1020-libstdc++.conf
🌟更新缓存:
sudo ldconfig
确认 GLIBCXX 版本:
为了确认 libstdc++.so.6.0.28 是否包含了所需的 GLIBCXX_3.4.26 版本,执行以下命令:
strings /usr/local/gcc-10.2.0/lib64/libstdc++.so.6.0.28 | grep GLIBCXX
如果在输出中看到了 GLIBCXX_3.4.26,那么就意味着所需版本的 libstdc++ 已经安装。
在环境中配置 vi /etc/profile 添加如下,然后source /etc/profile(我的环境是在/etc/profile下)
export PATH=/usr/local/gcc-10.2.0/bin:$PATH
✨下载GLIBC源代码:
wget http://ftp.gnu.org/gnu/libc/glibc-2.32.tar.gz
tar xvf glibc-2.32.tar.gz
cd glibc-2.32
创建构建目录并进入:
mkdir build
cd build
🌟配置构建(您可能需要指定不同的–prefix):
../configure --prefix=/usr
🌟编译并测试(测试步骤非常重要,确保新的库不会破坏系统):
make -j$(nproc)
make check
🌟安装新的GLIBC(十分危险,如果出错可能会导致系统不可用):
sudo make install