假设现在有这些文件:sub.c add.c div.c mul.c mainc head.h(前4个.C文件的头文件)
1.静态库制作流程
gcc -c sub.c add.c div.c mul.c -->生成 .o目标文件文件
ar rcs libmycal.a *.o -->生成.a静态库文件(静态库的名字构成:lib+你要做的库+.a)
2.调用静态库流程
方法1) gcc main.c -I(大写的i) ./ libmycal.a -o sum
-->生成可执行文件 sum
-->(具体格式:gcc+main函数+-I(头文件路径)+静态库+(-o+指定生成可执行文件名字)
(括号内的可以不加,默认生成a.out文件 )
./sum -->得到计算结果
方法 2)gcc main.c -L ./ -l(小写的L) mycal -I(大写的i) ./ -o sum
-->具体格式:-L+后面接静态库的路径 -l+接静态库的名字(你自己定义的库的名字)
-I+头文件路径 -o+指定生成的可执行文件 (同上)
./sum
3.动态库的制作流程:
gcc -fPIC sub.c add.c div.c mul.c -->生成 .o目标文件文件
gcc -shared -o libmycal.so *.o -->生成动态库.so文件
4.调用动态库
gcc main.c -L ./ -l mycal -I ./ -o sum -->出现调用失败
5.调用失败的原因:
没有让main.c和动态库建立连接;
6.解决办法
方法1:使用临时的动态库环境变量连接:export LD_LIBRARY_PATH=./(动态库所在目录) 重启linux之后失效
方法2:用vi/vim打开动态库配置文件:vim /etc/ld.so.conf 在文本中添加动态库的绝对路径 然后再用 sudo(使用root权限)idconfig (-v显示更新信息)更新即可 永久有效