linux静态库
静态函数库是在程序执行前就加入到目标程序中去了
优点:运行快
缺点:占内存
linux动态库
动态函数库,是在程序执行时动态由目标程序去调用
优点:占内存小
缺点:运行慢
静态库的制作
a,gcc 功能函数.c -c
生成功能函数.o文件
例 gcc func.c -c
b,ar rcs xxxx.a 功能函数.o
xxxx.a就是要生成的静态库文件名字随便取
ar rcs libfunc.a func.o
使用静态库
gcc main.c -lfunc -L ./ -o test
此时已经生成test的可执行文件
其中-l为在系统默认文件夹下寻找文件-L为在当前文件夹寻找.a文件,要把静态库文件砍头去尾
只需要把.o文件和.h文件发给他
动态库的制作
gcc -shared -fpic func.c -o libfunc.so
-shared为指定生成动态库
-fpic为fpic选项作用于编译阶段,在生成目标文件时就得使用该选项以生成目标文件时就得使用该选项以生成位置无关的代码
libfunc.so为生成的动态库
gcc main.c -lfunc -L ./ -o dt
和静态库是一样的要把动态库文件砍头去尾,此时会报错,因为找不到动态库文件。简单的解决办法就是写一个脚本start.sh,当我们在配置环境变量的目录时,我们用冒号(:)来分割这些目录途经
export LD_LIBRARY_PATH="/home/pi/linx"//LD_LIBRARY_PATH环境变量宏定义
///home/pi/linx动态库文件位置
./dt//生成的可执行文件
最后给start.sh加可执行权限
chmod +x start.sh
运行start.sh就可以执行该程序了
如果不想写shell脚本文件我们直接把我们所生成的库文件粘贴到/usr/lib下就可以了(不推荐使用该方法)
师上官可编程