编辑
******max.h*********
int max(int, int);
*****max.c*********
#include "max.h"
int max(int a, int b)
{
return (a > b) ? a : b;
}
******min.h*******
int min(int, int);
******min.c*******
#include "min.h"
int min(int a, int b)
{
return (a<b) ? a : b;
}
*******main.c**********
#include <stdio.h>
#include "max.h"
#include "min.h"
int main(int argc, char** argv)
{
int a = 10, b = 20;
printf("最大值:%d", max(a, b));
printf("最小值:%d", min(a, b));
return 0;
}
编译
生成可执行文件:gcc main.c max.c min.c -o test
生成静态库:
gcc -c max.c min.c
ar cr libtest.a max.o min.o
gcc -o test main.c -L. -ltest
生成共享库:
gcc -c -fPIC max.c min.c
gcc -shared -fPIC -o libtest.so max.o min.o
注:-lm连接数学库、-lpthread连接线程库、-g可调试
makefile
main: main.o max.o min.o
gcc -o main main.o max.o min.o
main.o: main.c max.h min.h
gcc -c main.c
max.o: max.c max.h
gcc -c max.c
min.o: min.c min.h
gcc -c min.c
clean:
rm *.o
简化后:
main: main.o max.o min.o
gcc -o $@ $^
.c.o:
gcc -c $<