1.源码编译 gcc 12
2.gcc7.3.0下载与安装
3.GCC 源码编译安装
4.升级GCC版本到11.1
5.Linux升级gcc到最新版本gcc-11.2.0
6.Linux驱动开发笔记(二):ubuntu系统从源码编译安装gcc7.3.0编译器
源码编译 gcc 12
最近对于C++协程的码包研究促使我决定更新gcc到最新稳定版本.1.0。首先,下载从gcc官网下载了gcc-.1.0.tar.xz的码包安装包,通过`tar xf gcc-.1.0.tar.xz`命令解压。下载
接下来,码包进入解压后的下载iap源码目录,执行`./contrib/download_prerequisites`脚本来自动下载所需的码包依赖项,确保编译环境准备就绪。下载
然后,码包开始编译过程,下载通过`./configure`命令,码包并设置编译选项,下载如`--prefix=/home/lingzhang/gcc`指定安装路径,码包`--enable-bootstrap`启用自举编译,下载`--enable-languages=c,码包c++`启用C和C++语言支持,`--enable-threads=posix`选择POSIX线程模型,`--enable-checking=release`开启检查以确保质量,`--disable-multilib`禁用多库支持,`--with-system-zlib`使用系统级的zlib库。执行`make`命令开始编译,接着`make install`进行安装。
为了方便后续使用,创建了一个名为gcc.env的模板匹配opencv 源码环境变量文件,内容为设置环境变量。通过`source gcc.env`来激活这个环境变量,确保gcc.1的正确使用。
最后,验证安装的gcc版本,通过`gcc -v`命令,显示的版本信息确认为.1,至此,gcc .1.0的编译和环境设置已完成。
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
无法联网时,c stl库源码手动下载依赖库(如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版本。java源码如何编译
,库升级
遇到动态库未找到问题时,需升级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版本需求。
升级GCC版本到.1
随着GCC .1的正式发布,对于那些已在项目中广泛使用基于C++协程的团队,尤其是依赖stackless库但受制于旧版本GCC的开发者,升级到新版本无疑提供了更佳的便利性和效率提升。考虑到旧版本GCC 8.3仍在稳定运行,且升级过程的成本相对较低,新版GCC能解决现有痛点,升级动力增强。
升级步骤大致分为:1. 从GCC官方仓库下载.1源码,推荐使用git clone或下载zip包解压;2. 利用新版本源码中的内置脚本安装依赖库,如mpfr, gmp, mpc和isl;3. 配置安装,指定安装目录,选择C和C++编译支持;4. 并行编译并安装,确保无误后以root权限运行;5. 验证安装成功;6. 考虑CMake使用和ABI兼容问题,以及LD_LIBRARY_PATH设置;7. 针对GDB版本的升级,以适应新版本GCC的要求。
通过这些步骤,项目可以顺利过渡到GCC .1,享受新版本带来的性能优化和功能增强。具体应用中,关注的特性包括但不限于协程的改进和GDB的兼容性提升。
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驱动开发笔记(二):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...
安装过程分为几个步骤。首先,确保网络连接,因为需要依赖库,如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++的配置。
å¦ä½å®è£ 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)
è¿æ ·æ们ç交åå·¥å ·é¾å°±å®è£ 好äº