如何编译一个含多个模块的 C 语言程序?

发布于 2022-08-29 23:39:15 字数 412 浏览 22 评论 0

现有如下文件夹:

main/
main.c MO1/ MO2/ MO3/

其中 MO1 MO2 MO3 分别是程序的一个模块,节构都是:

MO1/
mo1.c mo11.c mo12.c mo13.c 

main.c 调用 mo1.c mo2.c mo3.c
mo1.c 又调用 mo11.c mo12.c mo13.c

暂不考虑参数传递等问题,应该如何编译呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笙痞 2022-09-05 23:39:15

你需要的是学习怎样写makefile

如果你是伸手党,在根目录下创建一个文件名为makefile的文件,并按照下面的方法写:

#this is a makefile
objects = main.o mo1.o mo2.o mo3.o mo11.o mo12.o
compiler = gcc

main: $(objects)
    $(compiler) -o main $(objects)
clean:
    rm main *.o

然后你只要在terminal上输入make,就编译好了;如果输入make clean,则会清空编译出来的文件:

JerryMac:Dev Jerry$ make
cc    -c -o main.o main.c
cc    -c -o mo1.o mo1.c
cc    -c -o mo2.o mo2.c
cc    -c -o mo3.o mo3.c
cc    -c -o mo11.o mo11.c
cc    -c -o mo12.o mo12.c
gcc -o main main.o mo1.o mo2.o mo3.o mo11.o mo12.o
JerryMac:Dev Jerry$ make clean
rm main *.o
JerryMac:Dev Jerry$ ls
main.c      mo1.c       mo12.c      mo3.c
makefile    mo11.c      mo2.c

如果你想要深究什么是makefile,上面那段makefile为什么这么写,以及如何写makefile。
我推荐你阅读:跟我一起写Makefile系列

不喜欢何必死缠烂打 2022-09-05 23:39:15

简单粗暴的方法,把所有 .c 文件一起给 gcc 编译。如果你用 zsh 的话:

gcc **/*.c -o output
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文