静态库
静态库的命名规则
静态库文件的命名方式为 “libxxx.a” ,库名前加 “lib” ,后缀用 “.a” ,“xxx” 为静态库名。
前期准备
工作目录下"include"文件夹用来存放头文件,"src"文件夹用来存放源代码,"lib"文件见用来存放静态库文件,还有一个"main.c",总共四个文件
制作步骤
1.生成 ".o" 文件
gcc mytest.c -c -I ../include/
-I 指明头文件head.h所在目录
2.将 ".o" 文件生成静态库文件
ar rcs libmycalc.a calculate.o
3.将静态库文件 "libmycalc.a" 移入库目录 "lib"
只需要把"include"和"lib"两个文件夹发给别人即可
4.静态库的使用
gcc main.c -I ./include/ -L ./lib/ -lmycalc -o test
-I 指定头文件位置
-L 指定静态库文件位置
-l静态库名字(静态库文件linmycalc.a,静态库mycalc)
动态库
动态库的命名规则
与静态库类似, 库名前加 “lib” ,后缀用 “.so” ,“xxx” 为静态库名。
制作步骤
1.生成 ".so" 文件
gcc -fpic -shared calculate.c -I ../include/ -o libmycalc.so
2.将动态库文件 "libmycalc.so" 移入库目录
3.动态库的使用
gcc main.c -I ./include/ -L ./lib/ -lmycalc -o test
4.动态库加载问题
此时无法运行指令./test,需要加载动态库。
方法一:将动态库拷贝到默认目录 /usr/lib/
sudo cp ./libmycalc.so /usr/lib/
方法二:临时设置环境变量来指定动态库的搜索路径
export LD_LIBRARY_PATH="/home/pi/mydemo/libdemo/lib"
每次设备重启都要再次设置环境变量。
创建一个.sh脚本
export LD_LIBRARY_PATH="/home/pi/mydemo/libdemo/lib/动态库的路径"
./test//所要执行的程序名称
chmod +x start.sh
//给脚本加可执行的的权限
./start.sh
//执行该脚本