一般使用C
#ifndef __ADD_H__
#define __ADD_H__
#include <stdio.h>
#include <string.h>
#include <math.h>
int add(int,int);
#endif
#ifndef __MAIN_H__
#define __MAIN_H__
#include <stdio.h>
#include <string.h>
#include <math.h>
#endif
#include "Inc/add.h"
int add(int a,int b){
return a + b;
}
#include "Inc/main.h"
#include "Inc/add.h"
int main(void){
int a = 1;
int b = 3;
int result = add(a,b);
printf("result=%d\n",result);
return 0;
}
- 一起编译
gcc main.c add.c -o main
;win中出现main.exe
使用Makefile
calc:
gcc main.c add.c -o main
calc:
gcc main.c add.c -o main
以上这样子写不好,可以这么写
calc:add.exe
gcc add.exe main.c -o calc
add.exe:add.c
gcc add.c -o add
问题
- 是因为我们的add.c中没有main()这个主函数,所以我们可以
gcc -e 把一个函数作为主函数 .c文件 -nostartfiles -o 名称
比如gcc -e add add.c -nostartfiles -o add
所以我们Makefile这么写
calc:add.exe
gcc add.exe main.c -o calc
add.exe:add.c
gcc -e add add.c -nostartfiles -o add
这样子写,只要add.c改变,就要重新编译以下calc语句
把过程拆分
预处理
#gcc -e main.c>main.ii
gcc -E main.c -o main.i
编译
gcc -S main.i
汇编
gcc -c main.s
得到的二级制文件是执行不了的
链接
gcc main.o
gcc add.o -nostartfiles
删除
clean:
del *.exe