开发者社区> 问答> 正文

如何编译一个含多个模块的 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

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

展开
收起
a123456678 2016-06-07 17:57:05 2040 0
1 条回答
写回答
取消 提交回答
  • 你需要的是学习怎样写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系列

    2019-07-17 19:30:36
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
15分钟打造你自己的小程序 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载