你的位置:首页 > 操作系统

[操作系统]Linux平台Makefile文件的编写基础入门(课堂作业)


根据老师的要求,写一个超简单的makefile
准备:
       准备三个文件:file1.c, file2.c, file2.h
       file1.c:
             

 #include "file2.h"       int main()       {           printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$\n");           File2Print();           return 0;       }

  

       file2.h:

             

#include <stdio.h> #ifndef FILE2_H_       #define  FILE2_H_           #ifdef __cplusplus              extern "C" {           #endif           void File2Print();           #ifdef __cplusplus              }           #endif       #endif

 

 

       file2.c:
             

 #include "file2.h"       void File2Print()       {           printf("Print file2**********************\n");       }

  

基础:
       先来个例子:
       有这么个Makefile文件。(文件和Makefile在同一目录)
       === makefile 开始 ===
             

helloworld:file1.o file2.o  gcc file1.o file2.o -o helloworldfile1.o:file1.c file2.h  gcc -c -o file1.o file1.c file2.o:file2.c file2.h  gcc -c -o file2.o file2.c

 

一个 makefile 主要含有一系列的规则,如下:
目标文件:依赖文件
(tab)<command>
(tab)<command>

每个命令行前都必须有tab符号。

上面的makefile文件目的就是要编译一个helloworld的可执行文件。让我们一句一句来解释:

       helloworld : file1.o file2.o:                 helloworld依赖file1.o file2.o两个目标文件。

       gcc file1.o file2.o -o helloworld:      编译出helloworld可执行文件。-o表示你指定 的目标文件名。

      

       file1.o : file1.c file2.h:    file1.o依赖file1.c文件。

       gcc -c file1.c -o file1.o:编译出file1.o文件。-c表示gcc 只把给它的文件编译成目标文件, 用源码文件的文件名命名但把其后缀由“.c”或“.cc”变成“.o”。在这句中,可以省略-o file1.o,编译器默认生成file1.o文件,这就是-c的作用。

 

              file2.o : file2.c file2.h
              gcc -c file2.c -o file2.o

这两句和上两句相同。

如果要编译cpp文件,只要把gcc改成g++就行了。

写好Makefile文件,在命令行中直接键入make命令,就会执行Makefile中的内容了。

结果如图:

 

另附好博链接:http://goodcandle.cnblogs.com/archive/2006/03/30/278702.html

http://blog.csdn.net/liang13664759/article/details/1771246