- 前言
- 如何编译单个C文件
- GCC常用命令
- Compile配置
- Build配置
- Execute配置
- 如何编译多个C文件
- 解决方案
- 总结
编辑器我用过很多种,如Visual Studio、VS Code、Pycharm、Dev c++等等,最终还是用Geany这个小巧的编辑器最顺手。它大的优势就是轻量级,而且基本功能也挺全面的,所以一些简单的代码练习我都使用的它。
如何编译单个C文件Geany中菜单栏有个Build图标,点开后大致长这样
其中,第一栏 C commands 就是设置编译、汇编、链接等操作的地方。可以看到,底层实现实际是调用了GCC编译器完成的。这里简要介绍一下GCC常用语法。
- 预编译:宏定义展开、头文件展开、条件编译、删除所有注释。 不做语法检查。
- 命令:
gcc -E xxx.c -o xxx.i
- 生成预编译文件,后缀
.i
-o
指的是输出的意思,后面指定文件名
- 命令:
- 编译:将预处理文件编译成汇编文件,进行语法检查
- 命令:
gcc -S xxx.i -o xxx.s
- 生成汇编文件,后缀
.s
- 命令:
- 汇编:将上一步的汇编文件转换为二进制文件。
- 命令:
gcc -c xxx.s -o xxx.o
- 生成目标文件,后缀
.o
- 命令:
- 链接:将所有目标文件 + 库函数 + 启动文件生成可执行文件。
- 命令:
gcc xxx.o -o xxx.exe
- 生成可执行文件,后缀
.exe
- 命令:
- 执行:执行
xxx.exe
文件- 命令:xxx
- 直接输入文件名即可执行
注意:每个命令都代表可以从源文件(xxx.c
),直接执行到当前输出格式。所以常用的一般是后两个命令。举个栗子:
gcc -c test.c -o test.o //执行预编译+编译+汇编,直接输出test.o文件
gcc test.c -o test.exe //执行预编译+编译+汇编+链接,直接输出test.exe文件
-o
后面指定生成的文件名,后缀可以省略(编译器会自动生成)。
以上命令都可以在控制台(cmd)中运行。如果抛出异常,检查两点:
- GCC系统环境是否配置。可以直接输入
gcc
验证。 - 是否在当前c文件目录下。详见cmd的
cd
命令。
因此,我们回到Geany配置中,Compile所对应的命令为:gcc -Wall -c "%f"
。-Wall
可以生成所有警告信息。-c
代表这是一条汇编命令,将输入文件转换为目标文件.o
。%f
是Geany编辑器中的替代格式,详情参考:Geany Manual,常见的列举如下:
%e
:不带扩展名或路径的当前文件的名称。%f
:不带路径的当前文件的名称。
因此此处"%f"
代表当前文件名称(带后缀)。
小结:点击Compile图标,会进行汇编操作,在当前目录下生成目标文件.o
。
相比Compile,Build用的更多一些,命令为:gcc -Wall -o "%e" "%f"
。根据上文,我们可以看出这实际就是将当前文件("%f"
)输入,直接预编译+编译+汇编+链接生成指定的可执行文件("%e"
),且文件名保持一致。
命令为:"./%e"
,./
代表当前目录,%e
是当前文件名(不带后缀),因此点击执行(Execute)会直接执行Build所生成的.exe
文件。
上述方法只能编译单独的C文件,如果我们自己编写头文件,Geany目前的配置是无法找到头文件所对应的实现文件的。当然,直接在cmd中用GCC命令也是可以同时编译多个文件的,但本文仅讨论在Geany中的实现。
解决方案新建一个文件夹,存放所有要编译的C文件(你也可以选择建立一个工程,点击Project ->New)。同时将Build所对应的命令更改为gcc -Wall ./*.c -o "%e"
,这样,只要点击Build,就会编译当前目录下所有C文件,生成对应的可执行文件了。
Geany写一些脚本还是挺方便的,但在工程建立方面确实做的不是很好,至少在其他IDE中可能就会自动编译当前工程的文件。本文仅提供一种解决方案。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
分享题目:【Geany编辑器】如何同时编译多个C文件-创新互联
当前网址:http://scgulin.cn/article/eejhs.html