Linux平台Makefile文件的编写基础入门(课堂作业)

时间:2023-03-08 22:15:36
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 helloworld
file1.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中的内容了。

结果如图:

Linux平台Makefile文件的编写基础入门(课堂作业)

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

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