本例中,下载源码到$HOME/built/
目录下,安装到$HOME/local/gcc-9.4.0
目录下
1. 获取源码
在预计放源码的目录下,比如$HOME/built/
wget -c http://ftp.gnu.org/gnu/gcc/gcc-9.4.0/gcc-9.4.0.tar.gz
tar -zxvf gcc-9.4.0.tar.gz
cd gcc-9.4.0
2. 下载依赖
gcc源码中提供了可执行文件./contrib/download_prerequisites
来干这个事情,./contrib/download_prerequisites --help
可以查看使用方法
./contrib/download_prerequisites # 下载到当前目录下
3. 编译
创建和源码目录同级的编译目录gcc-build-9.4.0
(创建之后gcc-build-9.4.0
和gcc-9.4.0
源码目录是同级目录,本例中及都在$HOME/built/
下),在其中执行configure
# 目前在gcc-9.4.0源码目录下
mkdir ../gcc-build-9.4.0
# 进入编译目录
cd ../gcc-build-9.4.0
../gcc-9.4.0/configure --prefix=$HOME/local/gcc-9.4.0 --enable-checking=release --enable-languages=c,c++ --disable-multilib # prefix指定你想要安装到的目录
make -j && make install
然后源码压缩包和源码目录以及编译目录就可以删除了
2.5 在编译之前要确保安装了texinfo
检查下makeinfo
这个命令有没有,没有则是没有安装
https://iq.opengenus.org/makeinfo-command-not-found/
源码编译安装方法:
download source
wget -c http://ftp.gnu.org/gnu/texinfo/texinfo-7.0.tar.gzUnzip the download source code of teXinfo:
tar -xvf texinfo-7.0.tar.gz
cd texinfo-7.0Build and install teXinfo:
./configure –prefix=$HOME/local/texinfo-7.0
make -j && make install
With this, teXinfo will be installed in $HOME/local/texinfo-7.0
然后源码压缩包和源码目录就可以删除了
- add env variable
在~/.bashrc
($HOME/.bashrc
)中添加
export PATH=$PATH:$HOME/local/texinfo-7.0/bin
4. 配置环境变量
在~/.bashrc
($HOME/.bashrc
)中添加
export PATH=$HOME/local/gcc-9.4.0/bin:$HOME/local/gcc-9.4.0/lib64:$PATH
export LD_LIBRARY_PATH=$HOME/local/gcc-9.4.0/lib64:$HOME/local/gcc-9.4.0/lib:$LD_LIBRARY_PATH
export LD_PRELOAD=$HOME/local/gcc-9.4.0/lib64/libstdc++.so.6:$LD_PRELOAD
# export LD_PRELOAD=$HOME/local/gcc-9.4.0/lib64/libstdc++.so.6 之前博客里是这么写的,我感觉应该是拼接在前面,而不是覆盖,所以改成了上面那样
使得在当前shell生效则可以执行:
source ~/.bashrc
cmake不生效 指定指定版本gcc
给cmake
命令-D
指明变量值:
cmake -D CMAKE_C_COMPILER=$HOME/local/gcc-9.3.0/bin/gcc -D CMAKE_CXX_COMPILER=$HOME/local/gcc-9.3.0/bin/g++ ..
修改CMakeLists.txt
定义俩变量似乎没有效果:
SET(CMAKE_C_COMPILER $HOME/local/gcc-9.3.0/bin/gcc)
SET(CMAKE_CXX_COMPILER $HOME/local/gcc-9.3.0/bin/g++)