使用函数封装、库文件的制作与使用、多文件编译 C语言程序。
- 文件结构:
include:存放头文件
lib:存放库文件
src:存放源文件
- 制作动态库
新建test目录,创建 max.c、max.h 文件,可以创建测试文件 main.c 验证程序的正确性:
//max.h #ifndef _MAX_H_ #define _MAX_H_ int max(int a,int b);//比较 #endif
//max.c #include "max.h" int max(int a,int b){ return a>b?a:b ; }
制作动态库:
//制作过程文件 gcc -c -fPIC max.c -o max.o //制作动态库文件 gcc -fPIC -shared max.o -o libmax.so
-
编写编译规则Makefile
#定义变量保存gcc,arm-linux-gcc #CROSS_COMPILE=arm-none-linux-gnueabi- CC=$(CROSS_COMPILE)gcc SRCS=$(wildcard *.c) SRCS+=$(wildcard src/*.c) OBJS=$(patsubst %.c, %.o, $(SRCS)) T=main CONFIG=-I./include CONFIG+=-L./lib #CONFIG+=-ljpeg -lpthread -lapi_v4l2_arm1 CONFIG+=-lmax $(T):$(OBJS) $(CC) -o $@ $^ $(CONFIG) %.o:%.c $(CC) -c $< -o $@ $(CONFIG) clean: rm *.o src/*.o $(TARGET)
- 运行结果:
- 缺少库文件:
./main: error while loading shared libraries: libmax.so: cannot open shared object file: No such file or directory - 解决办法:
1、把库文件放在系统目录下:cp libmax.so /lib
2、配置环境变量将库文件存放路径设置一下