1.Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
2.å¦ä½å®è£
gcc-linaro-arm-linux-gnueabihf-4.8-2014.03
3.GCC-14.1.0发布,码下 本地编译最新版GCC攻略
4.gcc7.3.0下载与安装
5.GCC 源码编译安装
6.Linux升级gcc到最新版本gcc-11.2.0
Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
在编译Ubuntu驱动时,由于使用的码下gcc版本为7.3.0,通过apt管理和下载都无法直接安装,码下因此需要从源码编译安装gcc7.3.0编译器。码下
GCC,码下作为GNU项目的码下五河坝岔建丰源码头重要组成部分,是码下一款遵循GPL许可证的自由软件。起初,码下它为GNU操作系统设计,码下如今已广泛应用于Linux、码下BSD、码下MacOS X等系统,码下甚至在Windows上也有应用。码下GCC支持多种处理器架构,码下如x、码下ARM和MIPS,并且支持多种编程语言,如C、C++、Fortran、Pascal等。
要从源码安装gcc7.3.0,首先需要下载源码包。下载地址为:mirrors.tuna.tsinghua.edu.cn...
安装过程分为几个步骤。首先,确保网络连接,因为需要依赖库,sah1源码如libgmp-dev、libmpfr-dev和libmpc-dev。安装完这些后,不要卸载已有的gcc,因为可能会遇到问题。
下载并解压gcc-7.3.0.tar.gz,然后执行./configure。注意增加c和c++的配置,避免编译结果只有g++。配置完成后,进行make -j4编译,可能会遇到错误,如"fatal error: asm/errno.h: No such file or directory",这时需要修改头文件路径。
继续编译,可能会遇到"sanitizer_syscall_generic.inc::: error: '__NR_open' was not declared in this scope",解决方法是修正头文件链接。最后,编译成功后执行sudo make install,并确认安装版本。
在安装过程中,有两点需要注意:一是本地需要g++,否则编译时会出错,解决方法是安装gcc;二是安装后可能只有g++,没有gcc,此时需在./configure阶段添加c和c++的gotv高清源码目录配置。
å¦ä½å®è£ gcc-linaro-arm-linux-gnueabihf-4.8-.
1ã å¦æè¦èªå·±ç¼è¯å·¥å ·é¾ï¼ä»ä»¥ä¸é¾æ¥ä¸è½½æºç
crosstools-ngä¸è½½å°å
http://ymorin.is-a-geek.org/download/crosstool-ng/
åæ¶å¯¹æ¯ä¸ä¸ªçæ¬é½æç¸åºçè¡¥ä¸æ们尽éæè¿äºè¡¥ä¸æä¸ï¼è¿äºè¡¥ä¸çä¸è½½å°åæ¯
http://ymorin.is-a-geek.org/download/crosstool-ng/-fixes/
2ã 解åå·¥å ·é¾å缩å
$ cd ~
$ mkdir toolchain
$ cd toolchain
å°ä¸å¥½çgcc-linaro-arm-linux-gnueabihf-4.8-.æ·è´å°toolchainç®å½ä¸å¹¶è§£å
$ tar -xvf gcc-linaro-arm-linux-gnueabihf-4.8-. gcc-4.8
3ã ç¯å¢åéçæ·»å
ä¿®æ¹æ件/etc/bash.bashrcæ·»å å¦ä¸å 容
export PATH=$PATH:/home/linux/toolchain/gcc-4.8/bin
éå¯é ç½®æ件
$ source /etc/bash.bashrc
4ã å·¥å ·é¾çæµè¯
$ arm-none-linux-gnueabi-gcc âv
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/home/david/Exynos/toolchain/gcc-4.6.4/bin/../libexec/gcc/arm-armjzfssf-linux-gnueabi/4.6.4/lto-wrapper
Target: arm-armjzfssf-linux-gnueabi
Configured with: /work/builddir/src/gcc-4.6.4/configure--build=i-build_pc-linux-gnu --host=i-build_pc-linux-gnu--target=arm-armjzfssf-linux-gnueabi--prefix=/opt/TuxamitoSoftToolchains/arm-armjzfssf-linux-gnueabi/gcc-4.6.4--with-sysroot=/opt/TuxamitoSoftToolchains/arm-armjzfssf-linux-gnueabi/gcc-4.6.4/arm-armjzfssf-linux-gnueabi/sysroot--enable-languages=c,c++ --with-arch=armv6zk --with-cpu=armjzf-s--with-tune=armjzf-s --with-fpu=vfp --with-float=softfp--with-pkgversion='crosstool-NG hg+default-dfa9de - tc'--disable-sjlj-exceptions --enable-__cxa_atexit --disable-libmudflap--disable-libgomp --disable-libssp --disable-libquadmath--disable-libquadmath-support--with-gmp=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-mpfr=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-mpc=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-ppl=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-cloog=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-libelf=/work/builddir/arm-armjzfssf-linux-gnueabi/buildtools--with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm'--enable-threads=posix --enable-target-optspace --without-long-double---disable-nls --disable-multilib --with-local-prefix=/opt/TuxamitoSoftToolchains/arm-armjzfssf-linux-gnueabi/gcc-4.6.4/arm-armjzfssf-linux-gnueabi/sysroot--enable-c --enable-long-long
Thread model: posix
gcc version 4.6.4 (crosstool-NG hg+default-dfa9de -tc)
è¿æ ·æ们ç交åå·¥å ·é¾å°±å®è£ 好äº
GCC-.1.0发布, 本地编译最新版GCC攻略
这是一个常见问题,每一代gcc的本地编译过程基本保持不变。
操作环境:Debian 参考
按照官网 Installing GCC - GNU Project提供的攻略,主要步骤如下:
1. 下载源代码
从github或GNU官网获取,具体步骤不再赘述。
2. 安装本地编译的常见依赖
根据不同发行版,寻找对应的package进行安装。
3. 配置编译方式
此部分主要决定编译方式,以下按通用方法进行说明。
进入source code目录并安装必要库:
创建build目录:
配置项目,注意configure是在source code目录中进行的。
解释几个参数:enable-languages表示启用语言,program-suffix=-.1.0意味着编译出的程序名称后会添加后缀,如gcc-.0.1,建议添加后缀以区分版本。若需将后缀设置为默认gcc,只需执行以下命令:
具体如何切换版本可查看man手册。
--prefix指定的是之后install对应的目录,默认是/usr/local/bin,但建议自定义位置,以获得更高自由度和可控度。对于个人用户,其他参数可按默认设置。
4. make
configure完成后,执行make命令:
由于我的CPU最大线程为,因此直接使用j。ida pro 导出源码如果你不知道CPU线程数,可以查询。
接下来是漫长的等待,在我的机器上整个编译过程花费约分钟,还算快速。
5. make install
make完成后,执行install命令,操作都在用户目录下进行,无需sudo。
6. 添加到PATH
在~/.bashrc或~/.zshrc中添加以下内容,将MY_USR以及对应路径替换为你的安装路径。我这里与前面的--prefix=/home/scarlet-debian/scarlet-usr/local保持一致。
注意:LD_LIBRARY_PATH是为了告诉链接器要链接到哪里的动态库。如果以后不需要这些,可以删除。如果不配置LD_LIBRARY_PATH,可能导致运行时找不到对应动态库。
7. 使其生效
8. 验证
使用以下命令进行验证:
如果不希望更换默认GCC版本,只需在命令行临时输入以下命令:
即可在当前shell中使用cmake,进而使用最新的编译器。
gcc7.3.0下载与安装
下载与安装gcc7.3.0
首先,访问gcc官网获取最新源码,下载gcc7.3.0版本。
登录gcc官网后,进入相应目录下载gcc-7.3.0.tar.gz文件。
下载完毕后,最牛起爆源码使用tar命令解压源码包。
解压后,移动至解压目录执行安装配置。
通过./configure命令,指定安装路径为/usr/local/gcc-7.3.0。
接下来,运行make命令进行编译。
完成编译后,执行make install命令安装gcc7.3.0。
最后,为了方便使用,创建软链接,将/usr/local/gcc-7.3.0/bin目录下的gcc链接到/usr/bin。
至此,成功下载并安装gcc7.3.0,完成gcc的安装过程。
GCC 源码编译安装
前言
本文主要介绍如何在特定条件下,通过源码编译安装GCC(GNU Compiler Collection)4.8.5版本。在Linux环境下,特别是遇到较老工程代码和低版本GCC适配问题时,网络仓库不可用,可通过下载源码进行本地编译安装。文章总结了该过程的步骤,以期帮助读者解决类似需求。
Linux系统版本:SUSE Linux Enterprise Server SP5 (aarch) - Kernel \r (\l)
GCC版本:gcc-4.8.5
步骤如下:
1,源码下载
直接在Linux终端执行:wget ftp.gnu.org/gnu/gcc/gcc...
或手动下载:ftp://gcc.gnu.org/pub/gcc/infrastructure
选取对应的gcc版本下载。
2,解压并进入目录
解压下载的tar包:tar -jxvf gcc-4.8.5.tar.bz2
进入解压后的目录:cd gcc-4.8.5
3,配置依赖库
联网情况下:cd gcc-4.8.5/
./contrib/download_prerequisites
无法联网时,手动下载依赖库(如mpfr、gmp、mpc)并上传到指定目录,然后分别解压、重命名并链接。
4,创建编译存放目录
在gcc-4.8.5目录下执行:mkdir gcc-build-4.8.5
5,生成Makefile文件
cd gcc-build-4.8.5
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
推荐配置时,根据环境调整参数,如X_环境下的`--disable-libsanitizer`。
6,执行编译
make(可能耗时较长)
解决可能出现的问题,如libc_name_p和struct ucontext uc,通过参考gcc.gnu.org/git或直接覆盖相关文件。
7,安装GCC
在gcc-build-4.8.5目录下执行:make install
安装完成后,可直接解压并安装。
8,配置环境变量
执行命令:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/gcc-4.8.5/mpc:/root/gcc-4.8.5/gmp:/root/gcc-4.8.5/mpfr
确保路径一致,执行 source /etc/profile 使环境变量生效。
9,检查安装情况
通过`gcc -v`和`g++ -v`验证GCC版本。
,库升级
遇到动态库未找到问题时,需升级gcc库,通过查找和替换最新库文件解决。
,卸载系统自带的gcc
以root用户执行:rpm -qa |grep gcc | xargs rpm -e --nodeps
,修改ld.so.conf文件
编辑文件:vi /etc/ld.so.conf,在最下面添加实际路径,如/usr/local/lib和/usr/local/lib。
执行 ldconfig /etc/ld.so.conf。
,修改GCC链接
确保GCC及其相关工具的正确链接,使用`ll /usr/bin/gcc*`和`ll /usr/bin/g++*`检查链接结果。
至此,GCC源码编译安装流程完成,可满足特定环境下的GCC版本需求。
Linux升级gcc到最新版本gcc-.2.0
为了升级Linux系统中的gcc到最新版本gcc-.2.0,你可以遵循以下步骤:
首先,访问该地址下载最新的源码包并解压缩:
gcc-.2.0.tar.gz 可在 /gnu/gcc 地址获取,选择适合自己系统版本的文件进行下载。下载完成后,解压缩源码包。
其次,准备必要的依赖及配置文件,确保gcc正常编译。
根据gcc的构建需求,安装所需的开发工具、库文件等依赖。具体依赖列表可参考gcc源码包的README或构建指南。
配置gcc的编译参数,确保生成的代码满足特定需求。这包括设置编译器版本、优化级别、编译目标等。
进行编译,使用如下命令进行gcc源码的编译过程:
./configure --prefix=/opt/gcc-.2.0 --enable-bootstrap --enable-shared --enable-threads=posix --enable-plugin --enable-languages=c,c++,fortran,objc,obj-c++,java,ada --with-system-zlib --enable-__cxa_atexit --with-toolchain=/opt/gcc-.2.0 --with-std=gnu
编译完成后,执行以下命令进行安装:
make && make install
验证gcc版本,确保已成功升级到gcc-.2.0:
gcc --version
删除旧版本gcc,保留新版本以防止意外覆盖:
sudo rm -rf /usr/bin/gcc /usr/bin/g++ /usr/bin/gfortran
配置新版本全局可用,确保在任何目录下均可直接使用gcc、g++等工具:
sudo ln -s /opt/gcc-.2.0/bin/gcc /usr/bin/gcc
同样,为g++和gfortran创建符号链接:
sudo ln -s /opt/gcc-.2.0/bin/g++ /usr/bin/g++
sudo ln -s /opt/gcc-.2.0/bin/gfortran /usr/bin/gfortran
至此,gcc已成功升级到最新版本gcc-.2.0。为了更新动态库,根据动态库的类型和使用情况,可能需要重新构建或替换现有库文件。这通常涉及调整构建配置和重新编译依赖库。确保在进行此步骤之前,充分理解库文件的依赖关系。
Linux环境源码安装GCC/CMAKE
为了在Linux环境下源码安装GCC和CMAKE,我们需要遵循详细的步骤和策略。对于GCC源码,我们可以从GitHub-gcc-mirror/gcc获取4.4.6版本。接下来,进入下载后的GCC源代码目录。
在配置和编译GCC时,首先应该明确指定安装的目录,避免冲突。可能在配置脚本时遇到错误,这时候需要解决依赖项问题。分别安装MPFR、MPC和任何其他必要的依赖库。对于GCC8.3及以上版本,内部集成脚本能够简便地获取这些依赖库。
安装库路径后,再次执行配置文件,加入库路径参数,确保安装的每个步骤顺利进行。配置完成后,整个GCC安装过程即宣告成功。
为了测试GCC是否正确安装,遵循指导进行验证。
CMake的安装同样关键,可以通过直接指定需要的GCC版本来简化安装流程。在CMake命令行参数中指定GCC路径也是可行的。
在运行GCC4.4.6编译的程序时,可能存在系统路径问题,这是因为我们选择的是不替换安装方式。因此,需要额外操作,确保所需的库被正确添加到路径中。
遇到GCC多版本引起的ABI兼容问题时,如果编译链接过程中遇到“undefined reference to"“std::__cxx ***””错误,这提示可能是C++ ABI问题。处理方法是,针对GCC5.1之前版本发布的libstdc++中新增的ABI,通过添加定义-D_GLIBCXX_USE_CXX_ABI=0来解决该问题。
对于GDB版本的问题,特别在GCC.1的使用中,要求C++的编译器,导致了旧版本GDB启动出现Segment Fault。解决办法是升级GDB版本。
附录中提供了一些额外资源,例如Mingw下载,适用于位和位Windows的最新版x_-win-sjlj;CMake下载链接以及GCC的GitHub地址等。遵循这些资源和提示,能够帮助用户顺畅进行Linux环境下的GCC和CMAKE的源码安装与配置。