[转帖]linux系统gcc编译过程

linux,系统,gcc,编译,过程 · 浏览次数 : 0

小编点评

**GCC 程序的编译过程** **1. 预处理 (Pre-Processing)** - 读取头文件并将宏展开。 - 将预处理后的代码插入到源代码中。 **2. 编译 (Compiling)** - 使用预处理后的代码生成汇编文件。 - 汇编文件包含机器码,可执行文件。 **3. 汇编 (Assembling)** - 将汇编文件转换为机器码文件。 **4. 链接 (Linking)** - 将汇编代码和库文件链接在一起。 - 生成可执行文件。 **常用选项 -E:生成预处理文件** - `-E hello.c`:将 `hello.c` 的头文件插入到 `hello.i` 中。 - `-S hello.i`:仅编译 `hello.i` 中的代码。 - `-c hello.s`:仅汇编 `hello.c` 中的代码。

正文

https://www.jianshu.com/p/09c8edd86a96

 

姓名:曾国强

学号:19021210984

【嵌牛导读】GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。)

【嵌牛正文】

一、GCC程序的编译过程大概分四个阶段

1、预处理(Pre-Processing)

2、编译(Compiling)

3、汇编(Assembling)

4、链接(Linking)

二、GCC命令的常用选项

-E:生成预处理文件.i(头文件和宏展开)

-S:编译成汇编文件.s

-c:汇编处理,生成机器码(可执行文件).o

-o:指定输出文件名

-g:生成调试代码

-I:指定第一个寻找头文件的目录

-L:指定第一个寻找库文件的目录

-Wall: 打印所有警告信息

三、GCC命令的编译过程
例如:hello.c文件编译过程

#include <stdio.h>

int main()

{

printf("Hello World!\n");

return 0;

}

1、生成预处理文件hello.i

    gcc -E hello.c 

    在此过程中,gcc编译器将hello.c中的头文件插入到该文件中和并将hello.c中的宏进行展开。

2、编译成汇编代码文件hello.s

    gcc -S hello.i

    gcc在生成汇编代码后,停止。

3、将汇编代码文件编译成目标文件 hello.o

    gcc -c hello.s

4、连接

    gcc hello.o -o hello

与[转帖]linux系统gcc编译过程相似的内容:

[转帖]linux系统gcc编译过程

https://www.jianshu.com/p/09c8edd86a96 姓名:曾国强 学号:19021210984 【嵌牛导读】GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 F

[转帖]Linux系统多网卡环境下的路由配置

https://www.cnblogs.com/connect/p/linux-static-route.html Linux下路由配置命令 1. 添加主机路由 route add -host 192.168.1.11 dev eth0 route add -host 192.168.1.12 gw

[转帖]linux 系统 UDP 丢包问题分析思路

https://cizixs.com/2018/01/13/linux-udp-packet-drop-debug/ 最近工作中遇到某个服务器应用程序 UDP 丢包,在排查过程中查阅了很多资料,总结出来这篇文章,供更多人参考。 在开始之前,我们先用一张图解释 linux 系统接收网络报文的过程。 首

[转帖]Linux系统IO基准测试方法

https://www.cnblogs.com/wangzhen3798/p/13631848.html 顺序读写测试 主要关注磁盘的吞吐量,即每秒能够读入或者写出多少数据。普通单块机械磁盘顺序写在100MB/s左右,普通单块SSD的顺序写在500MB/s左右。该指标对MQ、ES等以append方式

[转帖]Linux系统指令 top 之 %si 占用高,分析实例

https://www.coonote.com/linux-note/linux-top-si-high-instance.html 续“top %wa 高的问题”之后,又遇到top之%si过高(高峰时段超过95%)的问题。 %wa高,说明磁盘忙。譬如磁盘读写次数非常高。 %si高,是否说明软中断忙

[转帖]Linux系统中的tar命令

https://www.cnblogs.com/PatrickLiu/p/9761988.html 时间一长什么东西都容易忘记,尤其是一些不常用的东西忘记的更快,所以避免忘记,就记录下来,可以方面使用的时候查询。Tar命令在linux系统中算是一个比较重要的命令,今天就针对该命令进行总结一下。 1.

[转帖]Linux 系统TCP连接内存大小限制 调优

https://www.cnblogs.com/liujunjun/p/12496677.html 系统TCP连接内存大小限制 TCP的每一个连接请求,读写都需要占用系统内存资源,可根据系统配置,对TCP连接数,内存大小,限制调优。 查看系统内存资源 记录内存 详情:cat /proc/meminf

[转帖]linux系统make命令详解

https://www.jianshu.com/p/9a3fc3edb18c 姓名:曾国强 学号:19021210984 转载自https://blog.csdn.net/ididcan/article/details/6193199 【嵌牛导读】make是linux和unix系统常用的编译命令。m

[转帖]Linux系统中双网卡绑定的方法

1、备份原有配置文件 cd /etc/sysconfig/network-scripts/mv ifcfg-eth0 ifcfg-eth1 /home/ 2、新建网卡配置文件,并填写配置信息 touch ifcfg-bond0 ifcfg-eth0 ifcfg-eth1 vi ifcfg-bond0

[转帖]Linux系统top命令中的io使用率,很多人都误解了它的具体含义

https://baijiahao.baidu.com/s?id=1641356547223820839&wfr=spider&for=pc 最近在做连续数据流的缓冲系统,C语言代码实现后,粗略测试了下,功能上应该没有问题。那么,接下来就该测试性能了。输入 top 命令,的确可以看到一系列 cpu