导航:首页 > 源码编译 > 源码编译gcc所需时间

源码编译gcc所需时间

发布时间:2025-06-25 08:42:57

① 如何制作arm-linux-gcc编译工具

一、下载源文件
源代码文件及其版本:
binutils-2.19.tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6.25.tar.bz2 (由于我在编译出错的过程中,根据出错的信息修改了相关的C代码,故而没有下载相应的补丁)
一般一个完整的交叉编译器涉及到多个软件,主要包括bilinguals、cc、glibc等。其中,binutils主要生成一些辅助工具;gcc是用来生成交叉编译器,主要生成arm-linux-gcc交叉编译工具,而glibc主要提供用户程序所需要的一些基本函数库。

二、建立工作目录
编译所用主机型号 fc14.i686,虚拟机选的是VM7.0,Linux发行版选的是Fedora9,
第一次编译时用的是root用户(第二次用一般用户yyz), 所有的工作目录都在/home/yyz/cross下面建立完成,首先在/home/yyz目录下建立cross目录,然后进入工作目录,查看当前目录。命令如下:

创建工具链文件夹
[root@localhost cross]# mkdir embedded-toolchains
下面在此文件夹下建立如下几个目录:
setup-dir:存放下载的压缩包;
src-dir:存放binutils、gcc、glibc解压之后的源文件;
Kernel:存放内核文件,对内核的配置和编译工作也在此完成;
build-dir :编译src-dir下面的源文件,这是GNU推荐的源文件目录与编译目录分离的做法;
tool-chain:交叉编译工具链的安装位;
program:存放编写程序;
doc:说明文档和脚本文件;
下面建立目录,并拷贝源文件。
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
拷贝源文件:
这里我们采用直接拷贝源文件的方法,首先应该修改setup-dir的权限
[root@localhost embedded- toolchains] #chmod 777 setup-dir
然后直接拷贝/home/yyz目录下的源文件到setup-dir目录中,如下图:

建立编译目录:
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
三、输出环境变量
输出如下的环境变量方便我们编译。
为简化操作过程。下面就建立shell命令脚本environment-variables:
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
用编辑器vi编辑环境变量脚本envionment-variables:[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
截图如下:
执行如下语句使环境变量生效:
[root@localhost scripts]# source ./environment-variables
四、建立二进制工具(binutils)
下面将分步介绍安装binutils-2.19.1的过程。
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2.19.1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
创建Makefile:
[root@localhost build-binutils] #../../src-dir/binutils-2.19.1/configure --target=$TARGET --prefix=$PREFIX
在build-binutils目录下面生成Makefile文件,然后执行make,make install,此过程比较缓慢,大约需要一个15分钟左右。完成后可以在$PREFIX/bin下面看到我们的新的binutil。
输入如下命令
[root@localhost build-binutils]#ls $PREFIX/bin

② GCC编译的4个阶段

GCC,即GNU Compiler Collection,是GNU项目开发的一种编程语言编译器。旨在为GNU操作系统提供一套编译器,现已成为类Unix操作系统(包括Linux、BSD、MacOS X等)的标准编译器,甚至在Windows系统上亦可使用。

GCC编译过程由四个阶段组成:预处理、编译、汇编和链接。接下来,让我们逐一探索。

考虑一个名为hello.c的源文件。

阶段一:预处理

预处理阶段主要负责处理程序中的#开头的指令,包括头文件、宏定义和注释。在Linux环境下执行命令后,可以查看到生成的hello.i文件中包含了预处理后的部分。

阶段二:编译

编译阶段将C/C++源代码转换为汇编语言。执行Linux命令后,可看到hello.s文件内容已转换为汇编代码。

阶段三:汇编

汇编阶段将汇编语言转化为机器可读的二进制代码。执行Linux命令后,hello.o文件内的内容就是汇编后的结果。

阶段四:链接

链接阶段将生成的hello.o文件组装成可执行文件。在Linux环境下执行命令后,可看到程序已成功生成并打印出结果。

若想简化整个编译流程,只需执行单一命令即可完成上述四个阶段的操作。

③ Linux Centos7.8.2003系统离线GCC源码编译升级

Linux Centos7.8.2003系统离线GCC源码编译升级的步骤如下

  1. 准备环境

    • 准备一个干净的Centos7.8.2003虚拟机。
    • 配置本地镜像源,确保可以在离线环境下安装软件包。
  2. 下载GCC源码

    • 从GCC的ftp站点下载所需版本的源码包,例如gcc10.1.0。
  3. 安装编译依赖

    • 使用yum group install Development Tools命令安装大部分开发所需的依赖库。
    • 离线环境下,手动下载并安装额外的依赖库,如gmp、isl、mpfr和mpc。注意按照依赖顺序进行安装。
  4. 解压并配置GCC源码

    • 解压下载的GCC源码包。
    • 进入解压后的目录。
    • 手动下载并安装所有必需的依赖库。
  5. 创建编译目录并编译

    • 创建一个单独的编译目录,以避免源码目录被污染。
    • 使用适当的编译参数配置GCC源码,例如指定安装目录等。
    • 开始编译过程。如果遇到找不到库的错误,将相应的库添加到环境变量中。
  6. 编译成功后的处理

    • 编译成功后,删除或备份原有的GCC软链接。
    • 创建新的软链接指向新编译的GCC目录。
    • 可以使用升级脚本来简化这一过程,但务必确保脚本的正确性,并在出现问题时及时调整。

注意事项: 离线编译过程中,确保所有依赖库都已正确安装,并按照依赖顺序进行编译。 编译时间可能因机器性能而异,但通常可以在十几分钟内完成。 在升级GCC后,建议验证新版本的正确性,以确保系统稳定性。

④ 源码编译 gcc 12

最近对于C++20协程的研究促使我决定更新gcc到最新稳定版本12.1.0。首先,从gcc官网下载了gcc-12.1.0.tar.xz的安装包,通过`tar xf gcc-12.1.0.tar.xz`命令解压。

接下来,进入解压后的目录,执行`./contrib/download_prerequisites`脚本来自动下载所需的依赖项,确保编译环境准备就绪。

然后,开始编译过程,通过`./configure`命令,并设置编译选项,如`--prefix=/home/lingzhang/gcc121`指定安装路径,`--enable-bootstrap`启用自举编译,`--enable-languages=c,c++`启用C和C++语言支持,`--enable-threads=posix`选择POSIX线程模型,`--enable-checking=release`开启检查以确保质量,`--disable-multilib`禁用多库支持,`--with-system-zlib`使用系统级的zlib库。执行`make`命令开始编译,接着`make install`进行安装。

为了方便后续使用,创建了一个名为gcc121.env的环境变量文件,内容为设置环境变量。通过`source gcc121.env`来激活这个环境变量,确保gcc12.1的正确使用。

最后,验证安装的gcc版本,通过`gcc -v`命令,显示的版本信息确认为12.1,至此,gcc 12.1.0的编译和环境设置已完成。

⑤ GCC 源码编译安装

前言

本文主要介绍如何在特定条件下,通过源码编译安装GCC(GNU Compiler Collection)4.8.5版本。在Linux环境下,特别是遇到较老工程代码和低版本GCC适配问题时,网络仓库不可用,可通过下载源码进行本地编译安装。文章总结了该过程的步骤,以期帮助读者解决类似需求。

Linux系统版本:SUSE Linux Enterprise Server 12 SP5 (aarch64) - 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

推荐配置时,根据环境调整参数,如X86_64环境下的`--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版本。

10,库升级

遇到动态库未找到问题时,需升级gcc库,通过查找和替换最新库文件解决。

11,卸载系统自带的gcc

以root用户执行:rpm -qa |grep gcc | xargs rpm -e --nodeps

12,修改ld.so.conf文件

编辑文件:vi /etc/ld.so.conf,在最下面添加实际路径,如/usr/local/lib和/usr/local/lib64。

执行 ldconfig /etc/ld.so.conf。

13,修改GCC链接

确保GCC及其相关工具的正确链接,使用`ll /usr/bin/gcc*`和`ll /usr/bin/g++*`检查链接结果。

至此,GCC源码编译安装流程完成,可满足特定环境下的GCC版本需求。

⑥ GCC编译的4个阶段

GCC编译的4个阶段分别是:

1. 预处理阶段 主要负责处理程序中的#开头的指令,如头文件包含、宏定义和注释的展开。 生成的文件通常带有.i后缀,例如hello.i,该文件包含了预处理后的代码。

2. 编译阶段 将C/C++源代码转换为汇编语言。 生成的文件通常带有.s后缀,例如hello.s,该文件包含了转换后的汇编代码。

3. 汇编阶段 将汇编语言转化为机器可读的二进制代码,也称为目标代码。 生成的文件通常带有.o后缀,例如hello.o,该文件包含了汇编后的二进制代码。

4. 链接阶段 将多个目标文件和库文件链接在一起,生成最终的可执行文件。 链接完成后,会生成一个可执行文件,该文件可以直接在操作系统上运行。

⑦ Linux 基础学习1:GCC 基本工作流程

GCC的基本工作流程包括预处理、编译、链接三个步骤

1. 预处理 GCC首先会对源代码进行预处理。这一步骤主要处理源代码中的宏定义、文件包含等预处理指令。预处理后的结果通常是一个中间文件,但也可以通过GCC的E选项直接输出预处理结果,而不进行后续的编译和链接。

2. 编译 经过预处理后的代码会进入编译阶段。在这一阶段,GCC会对源代码进行词法分析、语法分析,并最终生成汇编代码。汇编代码是机器码的中间表示形式,它包含了程序执行所需的所有指令。

3. 链接 编译生成的汇编代码会经过汇编器转换为目标文件,这些目标文件包含了程序的机器码,但通常还包含一些未解决的符号引用。链接器的作用就是将这些目标文件以及所需的库文件链接在一起,解决符号引用,最终生成一个可执行文件。

此外,GCC编译过程中还有一些常用参数,如O选项用于优化编译,提高程序的执行效率。掌握这些参数的使用,可以进一步提高编程和调试的效率。

阅读全文

与源码编译gcc所需时间相关的资料

热点内容
php算法书籍 浏览:787
一个程序员的生命周期 浏览:924
扫描文件变成pdf格式 浏览:293
curlsetoptphp 浏览:674
单片机51仿真器 浏览:499
阿拉希盆地服务器什么时候开服 浏览:461
pe装机文件不用解压吗 浏览:978
从哪里下载中国邮政app 浏览:339
程序员团体 浏览:973
蓝湖app怎么制作原型图 浏览:22
javahttprequest 浏览:956
程序员永远不会失业吗 浏览:181
linuxmd命令 浏览:354
安卓机没有双屏怎么办 浏览:621
python饼图的字体 浏览:229
公众舆论pdf 浏览:436
本地生活圈抖音小程序源码 浏览:185
阴阳师怎么解除命令方块 浏览:646
服务器能做什么工作 浏览:397
亿企app在哪里下载 浏览:460