1.编译单个源文件test.c
vi test.c
#include<stdio.h>
int main(){
printf("%s\n","tdfs");
}
gcc -o test test.c 编译生成执行文件test;
[root@localhost tests]# gcc -o test test.c
[root@localhost tests]# ls
test test.c
[root@localhost tests]# ./test
tdfs
[root@localhost tests]#
2.编译多个源文件
test.h
#ifndef TEST_H
#define TEST_H
int add(int a,int b);
#endif
test1.c
#include "test.h"
int add(int a,int b){
return a+b;
}
test.c
#include <stdio.h>
#include "test.h"
int main(){
int a = 3;
int b = 5;
int c = add(a,b);
printf("%d+%d=%d\n",a,b,c);
return 0;
}
编译
[root@localhost tests]# gcc test.c test1.c -o test
[root@localhost tests]# ./test
3+5=8
[root@localhost tests]#
或者
[root@localhost tests]# gcc -c test.c
[root@localhost tests]# gcc -c test1.c
[root@localhost tests]# ls
test1.c test1.o test.c test.h test.o
[root@localhost tests]# gcc test.o test1.o -o test
[root@localhost tests]# ./test
3+5=8
[root@localhost tests]#
如果有很多个 .c 源文件可以使用makefile(使用Tab空格)
[root@localhost tests]# vi makefile
test:test.o test1.o
gcc test.o test1.o -o test
test.o:test.c
gcc -c test.c -o test.o
test1.o:test1.c
gcc -c test1.c -o test1.o
.PHONY:clean
clean:
rm -rf *.o
保存makefile文件
[root@localhost tests]# make
gcc -c test.c -o test.o
gcc -c test1.c -o test1.o
gcc test.o test1.o -o test
[root@localhost tests]# ./test
3+5=8
[root@localhost tests]#
3.使用动态链接库
将test1.c编译成动态库文件
[root@localhost tests]# gcc -fPIC -shared -o /usr/lib/libtest1.so test1.c
[root@localhost tests]# gcc test.c -L. -ltest1 -o test
[root@localhost tests]# ./test
3+5=8
[root@localhost tests]#
使用makefile
[root@localhost tests]# vi makefile
test:test.c libtest1.so
gcc test.c -L. -ltest1 -o test
libtest1.so:test1.c
gcc -fPIC -shared -o /usr/lib/libtest1.so test1.c
保存makefile
[root@localhost tests]# make
gcc -fPIC -shared -o /usr/lib/libtest1.so test1.c
gcc test.c -L. -ltest1 -o test
[root@localhost tests]# ./test
3+5=8
[root@localhost tests]#
4.使用静态链接库
将test1.c编译成目标文件test1.o,再编译成静态库文件
[root@localhost tests]# gcc -c test1.c
[root@localhost tests]# ar cr libtest1.a test1.o
[root@localhost tests]# gcc test.c -L. -ltest1 -o test
[root@localhost tests]# ./test
3+5=8
[root@localhost tests]#