如果一个项目有两个h文件,三个c文件组成,其中一个c文件是main.c里面调用其他两个c文件中实现的函数。如下所示:
//mytool1.h
#ifndef _MYTOOL_1_H
#define _MYTOOL_1_H
void mytool1_print(char *print_str);
#endif
//mytool1.c
#include "mytool1.h"
void mytool1_print(char *print_str)
{
printf("This is mytool1 print %s ",print_str);
}
//mytool2.h
#ifndef _MYTOOL_2_H
#define _MYTOOL_2_H
void mytool2_print(char *print_str);
#endif
//mytool2.c
#include "mytool2.h"
void mytool2_print(char *print_str)
{
printf("This is mytool2 print %s",print_str);
}
//main.c
#include "mytool1.h"
#include "mytool2.h"
int main(int argc,char **argv)
{
mytool1_print("sds");
mytool2_print("sdsd");
}
方法1:先只编译每个c文件,生成中间文件,再连接中间文件:
如果用gcc命令进行编译,可以每个c文件先生成中间文件即o文件,然后三个中间文件进行连接生成最中的可执行文件。
gcc -c mytool1.c //这样生成了mytool1.o文件
gcc -o mytool2.c //这样生成了mytool2.o文件
gcc -o main.c //这样生成main.o文件
最后把生成的三个中间文件连接起来,最终生成可执行的test文件:
gcc -o test mytool1.o mytool2.o main.o
这个连接文件的顺序无所谓,只要保证这些被连接的o文件中有且仅有一个main函数即可。
方法2:直接生成最后的可执行文件,不生成过程o文件:
gcc -o test mytool1.c mytool2.c main.c