动态库制作:
参考链接
https://www.cnblogs.com/sunsky303/p/7731911.html
现在又 demo.c 内容如下
现在想把demo.c 变成动态库。
1. 把demo.c 转换为动态库 libcalc.so
gcc -shared -fpic demo.c -o libcalc.so
-shared :指定生成动态库
-fpic: 是一种标准,作用于编译选项,生成位置无关码。
使用 ls查看
2 动态库的使用
直接使用:默认生成 a.out
gcc calculatorT.c -lcalc -L ./
生成别名:mainProDy
gcc calculatorT.c -lcalc -L ./ -o mainProDy
擦,出现问题
解决方案:把动态库 拷贝到 usr/lib中去
sudo cp libcalc.so /usr/lib
能执行,程序会默认去 usr/lib中找。但是开发中,每个模块都放到usr/lib中去找,很费劲且不方便,有时不一定有权限
问题,如何指定在当前路径去找 ?
引用动态库,怎么指定动态库的位置
查看环境变量:
export
查看当前文件夹路径
把当前路径加入到环境变量
export LD_LIBRARY_PATH="/home/pi/test"
这个时候再运行 ./mainProDy 出现了运行结果
缺点:这种环境变量是临时的,只针对这一个窗口,换一个串口就不行了
解决办法:shell脚本
vi start.sh
给脚本加一个可执行的权限 脚本默认是没有可执行权限的
chmod +x start.sh
./start.sh
这样在不同串口也能运行
shell脚本说简单点,就是把不同的指令配在一起
查看文件大小的执行 du 8K ?