gcc编译可执行文件和cmake编译可执行文件

文章详细介绍了在Windows环境下如何下载安装GCC(MinGW-w64),以及GCC将源代码编译成可执行文件的四个步骤:预处理、编译、汇编和链接。同时,解释了静态库和动态库的概念,提供了创建和链接这两种库的方法。此外,文章还探讨了CMake工具的使用,包括编写CMakeLists.txt文件来自动化编译过程,并解决了在Windows上使用CMake可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gcc编译

gcc的下载(下载mingw,里面包含gcc)
下载安装MinGW-w64详细步骤(c/c++的编译器gcc的windows版,win10真实可用)

gcc编译可执行文件

由源码转换为可执行文件要顺序经过四个步骤
1、预处理(pre processing)
2、编译(compiling)
3、汇编(assembling)
4、链接(linking)

预处理gcc命令:

预处理
gcc -E main.c -o main.i
其中 -E -o 是编译选项,-E 指预处理,-o 指生成的目标文件。生成的为 .i 文件(扩展文件)。

编译gcc命令:

编译
gcc -S main.i -o main.s
其中 -S 指编译。生成的为 .s 文件。

汇编gcc命令:

汇编
gcc -c main.s -o main.o
其中 -c 指汇编。生成的为 .o 文件(目标文件)。

链接gcc命令:

链接
gcc main.o -o main
生成的为可执行文件(windows下为.exe)。


gcc main.c -o main
上述命令由源文件生成可执行文件,过程中依然是先构建目标文件,只不过目标文件在编译可执行文件后删除。

 gcc编译可执行文件的流程结果

gcc的编译过程中,不同阶段执行的动作不同。

预处理阶段:

这个步骤的动作会把源文件中引入的头文件展开和一些宏定义的替换。

编译阶段:

这个步骤的动作会先检查源码中是否有语法错误等,然后将高级语言转换为汇编语言。

汇编阶段:

这个步骤的动作会根据编译生成的汇编语言文件,生成二进制代码的目标文件。

链接阶段:

这个步骤是对目标文件中只有声明但没有实现的方法做一个链接库的动作。库包含静态库和动态库,库里包含了方法的实现。

参考
GCC编译的四个阶段
gcc编译的四个过程


静态库和动态库

其中,当一个项目需要引用到别的项目的方法或内容,项目很难将对方的源码引入,这时可以将对方的源码编译成一个库,在编译己方项目时,通过链接库的方法来获取其他项目函数的实现。静态库和动态库的区别为,静态库会编译进可执行文件中。而动态库不随可执行文件,由可执行文件执行到需要动态库的时候才去动态库里找实现。在linux系统中,静态库为.a文件,动态库为.so文件;在windows系统中,静态库为.lib文件,动态库为.dll文件。

gcc编译静态库的方法

ar -rc libtest.a .\test.o

首先由test.c编译出目标文件test.o,根据目标文件生成静态库libtest.a。

gcc编译链接静态库的方法

gcc -o main.exe main.o -L .\test1\ -l tes

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值