在介绍makefile前,先介绍linux上如何调用类的方法。下面简单的介绍如何在main.c 中调用print.c中的函数和类。
见实例:
print.h
#include <stdio.h>
int printHello();
class People
{
public:
People();
~People();
void PeopleHello();
};
print.c
#include "print.h"
int printHello()
{
printf("hello\n");
}
People::People(){}
People::~People(){}
void People::PeopleHello()
{
printf("Hello people\n");
}
main.c
#include "print.h"
#include <stdio.h>
int main()
{
printHello(); //函数
People people; //类
people.PeopleHello();
return 0;
}
首先编译print.c,生成print.o目标文件:g++ -c print.c
将.o文件和main.c一起编译:g++ main.c print.o -o hello
首先是对makefile的理解: 它是一个规则,用来确定如何编译链接c/c++文件。它实现的机制类似于宏,整个过程可以理解为递归方式,一个一个目标实现。(生成的文件为test1和test2都是可执行文件,在linux中后缀名不是很重要)
如下面这段简单的makefile,解释如注释。
all:rest1 rest2 //目标为all,由rest1和rest2组成
//,当运行时就会去先查找rest1再查找rest2
rest2:io.o test.o //test2由io.o和test.o生成
gcc io.o test.o -o test1 //生成过程。其中gcc是编译c的代码,将.o文件链接成可执行test1
rest1:data.o main.o //文件,这里-o的意思是将链接后的文件归档为
gcc data.o main.o -o test2
io.o:io.h io.c //目标:编译出.o文件
gcc -c io.c //编译过程。
data.o:data.c data.h
gcc -c data.c
clean: //这里是伪目标
rm *.o