ubuntu 编译c源码-Linux下的GCC编译器

在Linux下进行C语言编程,必须使用GNUGCC编译C源代码,生成可执行程序。

1. GCC 快速入门

Gcc指令的通常格式是: Gcc [选项] 要编译文件 [选项] [目标文件]

其中ubuntu 编译c源码,目标文件可以默认,Gcc默认生成的可执行文件名为:compiled file.out

我们来看看经典的入门程序“HelloWorld!”

#vihello.c

#包括

#包括

无效主(无效)

printf("你好世界!rn");

用gcc编译来执行程序。

#gcchello.c

该命令会直接从hello.c生成最后的二进制补码可执行程序a.out

该命令意味着执行 (1) 预处理、(2) 汇编、(3) 编译和 (4) 链接以生成最终的二进制补码可执行程序。 这里没有指定输出文件,默认输出为a.out。

如何指定最后的二进制补码可执行程序名? 使用-o选项指定名称。例如需要生成执行程序hello.exe,所以

#gcchello.c-ohello.exe

二、GCC命令分析——四步

之前我们知道GCC编译源代码生成最终可执行的二进制补码程序。 GCC后台包括四个阶段的执行。

GCC编译C源代码分四步:

预处理----->编译---->汇编---->链接

下面我们就利用GCC命令选项来一一分析GCC的流程。

1)预处理

在此阶段,编译器编译出C源代码中包含的头文件,例如stdio.h,用户可以使用gcc选项“-E”来查看。

用法:#gcc-Ehello.c-ohello.i

功能:预处理hello.c并输出hello.i文件。

2)编译阶段(Compiling)

ubuntu 编译c源码-Linux下的GCC编译器

第二步是编译阶段。 在这个阶段,Gcc首先需要检测代码的规范性,是否存在语句错误等,以确定代码中实际要做的工作。 检测正确后ubuntu 编译c源码,Gcc将代码翻译成汇编语言。 用户可以使用“-S”选项来查看。 该选项仅编译而不汇编并生成汇编代码。

选项

用法:[root]#gcc –Shell.i –ohello.s

功能:将预处理输出文件hello.i组装到hello.s文件中。

3)组装阶段(Assembling)

汇编阶段将编译阶段生成的“.s”文件转换为二进制补码目标代码。

选项-c

用法:[root]#gcc –chello.s –ohello.o

功能:编译汇编输出文件test.s,输出test.o文件。

4)链接阶段(Link)

编译成功后,进入链接阶段。

没有选项链接

用法:[root]#gcchello.o – ohello.exe

功能:将编译后的输出文件hello.o链接成最终的可执行文件hello.exe。

函数库通常分为两种类型:静态库和动态库。 静态库是指在编译链接时,将库文件的所有代码都添加到可执行文件中,因此生成的文件比较大,但运行时不再需要库文件。 它的后缀通常是“.a”。 动态库则相反,在编译和链接时并不将库文件的代码添加到可执行文件中。 相反,该库是在程序执行时由运行时链接文件加载的,这样可以节省系统开销。 动态库通常具有后缀“.so”。 如上所述,libc.so.6是一个动态库。 gcc编译时默认使用动态库。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 ubuntu 编译c源码-Linux下的GCC编译器 https://www.wkzy.net/game/184437.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务