一.静态(链接)库 libfun.a
静态链接进可执行程序 可执行程序偏大
运行时只需要可执行程序即可
生成静态库步骤
gcc -c fun.c -o fun.o
ar rcv libfun.a fun.o //需要用.o文件生成数据库
运行 gcc main.c libfun.a
二.动态库 libfun.so
动态链接进可执行程序 可执行程序较小
运行时需要可执行程序及库都存在
动态库生成步骤(动态库名字必须以lib开头)
gcc -fPIC -shared fun.c -o libfun.so
gcc main.c {-I ./include} {-L ./lib} -lfun
头文件目录 动态库目录
三.makefile
TARGET=all
OBJ := main.0
OBJ += fun.o
CC=gcc
$(TARGET):$(OBJ)
$(CC) $^ -o $@
%.o:%.c
$(CC) -c $< -o $@
.PHONY:
clean:
rm $(OBJ) $(TARGET)