add.c 的内容
int Add(int a,int b)
{
int result;
result=a+b;
return result;
}
minus.c 的内容
int Minus(int a,int b)
{
int result;
result=a-b;
return result;
}
all.c的内容
#include<stdio.h>
int main(void)
{
int a=8;
int b=3;
printf("a=%d b=%d/n",a,b);
int sum=Add(a,b);
printf("a+b=%d/n",sum);
int cha=Minus(a,b);
printf("a-b=%d/n",cha);
return 0;
}
把三个文件统一编译链接 进行处理 有这么几种方法
1 单个文件的编译最后统一链接
gcc -c all.c
gcc -c add.c
gcc -c minus.c
最后生成的是三个.o文件
gcc all.o add.o minus.o -o all 生成的是可执行文件all
2 三个文件一起编译链接
gcc add.c minus.c all.c -o all 生成的是可执行文件 all
3 先将add.c 和minus.c 生成.o文件 再生成库文件 对all.c进行编译链接
gcc -c add.c minus.c 生成.o文件
ar rv libtest.a add.o minus.o 对.o文件生成libtest.a 库文件,将这个库文件拷贝到/usr/lib目录下,
gcc -o all all.c -ltest 对测试程序进行编译链接
最后生成可执行文件 all
这里要注意的是生成的库文件名字和后来编译all.c时候使用的库文件要对应起来。上文中使用的是libtest.a 后面就使用-ltest。如果前面使用liball.a,后面就得使用-lall。 库文件的后缀暂时还是更改不了。
test:all.o add.o minus.o
gcc -o all all.o add.o minus.o
all.o:all.c
gcc -c all.c
add.o:add.c
gcc -c add.c
minus.o:minus.c
gcc -c minus.c
clean:
rm -f all.o add.o minus.o
保存成makefile,直接在当前目录下运行指令make
刚开始没有成功,把Makefile更改成文件a,直接运行make -f a 。指定a为Makefile便可以成功。
后来直接把文件名更改成了Makefile 便成功了。