如何编译一个含多个模块的 C 语言程序?
现有如下文件夹:
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
暂不考虑参数传递等问题,应该如何编译呢?
邓迪的钩子
10 years, 3 months ago
Answers
你需要的是学习怎样写
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系列
小龙救世界
answered 10 years, 3 months ago