gcc编译器详解

GCC编译器详解

因为后面我需要用到Makefile来管理文件,因此不得不先学习一下gcc的使用 ,下面是一些具体的使用方法

gcc的编译流程

在这里插入图片描述
gcc编译的时候对应的文件后缀解释,其中.a代表静态库,.so代表动态库。其他的都是我们所熟知的,就不做过多赘述。
在这里插入图片描述
在我们使用gcc的时候,一般都需要把命令执行位置调整到.c文件对应的目录下面

gcc编译细节

gcc -E main.c -o main.i

如上所示我们可以使用gcc工具将.c文件预处理成.i文件,其中E是将文件进行预处理,o是输出一个处理后文件,如果不加-o是不会输出对应的文件只会打印在终端,后面的两个不加-o也可以自动生成对应的文件。

gcc -S main.c -o main.s

如上是将.c文件处理成.s汇编文件。

gcc -c main -o main.o
gcc -c a.c b.c c.c  #同时编译多个文件

如上是将.c文件编译生成.o可重定位的目标程序文件。

gcc main.c
gcc main.c -o main  #指定一个名字

不需要制定任何过程直接把三个过程全部执行完毕并生成对应的可执行文件。

静态库(gcc多个文件链接)

如果main.c需要用到其他文件的话,此时有以下两种方法生成最终的可执行文件

#方法一
ar -r [lib.a] [a.o] [b.o]  #lib是自定义库的名字,.o是需要链接成库文件的集合
gcc main.c lib.a -o main #编译main.c需要用到lib这个静态库文件。
gcc main.c -o main -l[库名] -L[库路径] #跟上面这一行实现结果一样,注意-l和-L后面不能留空格
#方法二
gcc main.o a.o b.o -o main #把所有需要链接的.o编译即可

动态库

gcc编译动态库方式如下,现将.c文件编译成二进制.o文件,然后用-share将.o编译成一个动态库文件,最后将mian.c和动态库文件一起编译成可执行文件,注意-l和-L后面不能留空格。
在这里插入图片描述如果想继续学习makefile详解,可以看下一篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入~狮

如果喜欢可以多多鼓励!!!

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

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

打赏作者

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

抵扣说明:

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

余额充值