电子商务网站建设维护,做网站注册什么公司好,河南seo公司,做网站的运营维护都要学什么文章目录 背景一、下载源码二、编译前依赖准备2.1 相关工具依赖2.2 相关lib#xff08;gmp/ mpfr /mpc#xff09;依赖2.2.1 lib源码下载2.2.2 lib源码编译 三、编译GCC3.1 编译3.2 链接 四、报错处理 背景
日常可能涉及到系统里自带GCC版本与被编译源码存在不兼容#xff… 文章目录 背景一、下载源码二、编译前依赖准备2.1 相关工具依赖2.2 相关libgmp/ mpfr /mpc依赖2.2.1 lib源码下载2.2.2 lib源码编译 三、编译GCC3.1 编译3.2 链接 四、报错处理 背景
日常可能涉及到系统里自带GCC版本与被编译源码存在不兼容或者需要对GCC需要做一些定制化修改因此需要通过源码编译出GCC工具的场景。 一、下载源码
下载地址从清华源下载源码会快一些。 本文编译gcc目标工具为8.3.0版本系统自带gcc工具为11.4版本需要被替换。 wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.gz 二、编译前依赖准备
2.1 相关工具依赖
编译过程会涉及到一些工具的使用需要看本机系统是否具备这些工具如下是编译过程遇到需要相关工具需要必须被安装具体需要看读者自己系统环境见招拆招。 sudo apt install m4 sudo apt install libtool-bin sudo apt install g sudo apt install gpp 2.2 相关libgmp/ mpfr /mpc依赖
GCC编译过程会对这三个库有依赖gmp, mpfr , mpc ,否则编译过程会报错。
2.2.1 lib源码下载
从如下3个链接获取gmp, mpfr , mpc 源码 wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2 wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-3.1.4.tar.bz2 wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz 2.2.2 lib源码编译
安装过程要注意先后顺序因为lib之间也有相互依赖。 gmp编译 cd gmp-6.1.0/ ./configure --prefix$(pwd) make make install 产出libgmp.so mpfr编译 mpfr会依赖到gmp的库。 cd mpfr-3.1.4/ ./configure --prefix$(pwd) make make install 生成 libmpfr.so / libmpfr.a 位于lib下 头文件位于include下 如果过程如有报gmp的依赖报错需要后加入依赖路径 –with-gmp-includegmp的头文件路径 –with-gmp-libgmp的lib路径 mpc编译 cd mpc-1.0.3/ ./configure --prefix$(pwd) make make install 编译过程如有报mpfr的依赖报错需要后加入依赖路径 –with-mpfr-includempfr的头文件路径 –with-mpfr-libmpfr的lib路径 三、编译GCC
3.1 编译
执行如下命令开始编译 mkdir -p /usr/local/gcc-8.3.0 #存放编译产出cp mpfr-3.1.4/lib/libmpfr.so* /usr/lib/ #libmpfr库在日常编译会被依赖./configure --prefix/usr/local/gcc-8.3.0 #指定产出路径--disable-multilib--with-gmpgmp-6.1.0 路径--with-mpfrmpfr-3.1.4 路径--with-mpcmpc-1.0.3 路径make -j 16 # 16核同时编译make install编译时间会比较久耐心等待… 编译完成在/usr/local/gcc-8.3.0/bin下生成gcc工具 /usr/local/gcc-8.3.0/bin/gcc -v可以查看版本
3.2 链接
由于gcc工具在/usr/local/gcc-8.3.0/bin下需要创建软链接将系统gcc默认指向/usr/local/gcc-8.3.0/bin/gcc。
which gcc #查看gcc路径。如果在/usr/bin/gcc且是个软链接
rm /usr/bin/gcc #删除原软链接
ln -s /usr/local/gcc-8.3.0/bin/gcc /usr/bin/gcc #重新建立软链接这样就可以正常使用gcc做其他源码编译了。如果是要交叉编译arm gcc流程也跟上面类似只是编译工具用arm工具进行编译。 四、报错处理
编译过程可能有工具依赖相关的报错需要具体分析但如果存在sanitizer_common/sanitizer_internal_defs.h:xxx报错需要屏蔽掉 configure 里的 target-libsanitizer这行再编译。