Linux——gcc/g++编译器

目录

I.Linux编译器

1.gcc/g++编译器

在C代码生成可执行程序的过程中,会有四个过程:

1预处理,2编译,3汇编,4链接

Linux对.c文件分辨进行预处理,编译,汇编三大步指令:

预处理指令:

编译指令:

汇编指令:

接下来说一说链接过程:

II.动静态链接 

一.动态链接

二.静态链接

三.两个链接的区别:

III.动静态库

安装C/C++静态库的指令:

file指令:

总结:


I.Linux编译器

1.gcc/g++编译器

gcc是用来编译C语言代码的编译器,而g++是用来编译C++代码的编译器的。

而gcc和g++都是软件,需要使用yum进行下载

注:需要使用root权限才能下载 

在C代码生成可执行程序的过程中,会有四个过程:


1预处理,2编译,3汇编,4链接


预处理:从test.c开始,该代码文件会通过预处理后便停下来,形成test.i文件(头文件展开,去注释,宏替换,条件编译)。

编译:从test.i开始,该代码文件会转换成汇编语言,形成test.s文件。

汇编:从test.s开始,该代码文件会转换成计算机能读懂的二进制文件,形成test.o文件。

链接 :将多个test.o文件由链接起绑定在一起,形成单一的可执行程序,并且与C代码库中的函数一起。

Linux对.c文件分辨进行预处理,编译,汇编三大步指令:

gcc -E test.c -o test.i  (预处理指令)
gcc -S test.i -o test.s  (编译指令)
gcc -c test.s-o test.o    (汇编指令)

第四个链接过程指令不需要写:

默认版的链接指令:gcc test.o 

因为操作系统会默认从特定目录中找所需要的第三方库,若系统库中没有,则需要使用-l选项去链接: 

完整版的链接指令:gcc test.o  -l [第三方库] 

预处理指令:

gcc -E test.c -o test.i  (预处理指令)

        预处理所做的工作就是:编译器将.c文件中的头文件从操作系统库中找出来,然后拷贝头文件的内容到一个.i文件中,相当于展开头文件;此外将定义好的宏,条件编译等指令带入代码中;将.c文件中的注释全都注释掉(计算机不需要知道你写的注释,没用!它只需要代码)

 通过上图可知:.i文件的行数达到了近900行,百分之90多的内容全是展开的头文件的内容

编译指令:

gcc -S test.i -o test.s  (编译指令)

这个过程所做的工作就是:编译器对代码进行语法,词法,语义的分析,将代码从C类型转换为高级汇编型语言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙予清的zzz~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值