1.制作出来的库,如何给用户使用?
头文件 *.h
制作出来的库 *.so
2.动态库的命名规则(三部分)
lib + 自定义库的名字 + .so
3.制作动态库的步骤
1 将.c文件生成.o
[语法] gcc .c文件(原材料) -c -fpic(fPIC)
gcc *.c [-I ./include] [-c] [-fpic(fPIC)]
2 使用gcc -shared,将.o文件打包,生成libXXX.so
gcc [-shared *.o] [-o libXXX.so]
4.动态库的使用
生成可执行文件
gcc main.c -I ./include/ -L ./lib/ -lmycalc -o app
-L 指定静态库的路径
-lXXX XXX指定静态库的名字
5. 为什么程序编译完成了之后,运行时确找不到so库呢
使用ldd命令查看,运行时所需要链接的so库
6. 如果找不到就需要配置so库路径
1)export LD_LIBRARY_PATH=自定义动态库的路径
(只能起到临时作用,关闭终端后失效)
LD_LIBRARY_PATH : 指定查找共享库(动态链接库)时除了默认路径之外的其他路径,该路径在默认路径之前查找
2)将上述命令写入home目录下的.bashrc文件中,保存后重启终端生效(永久)
3)直接将动态库拷贝到user/lib的系统目录下(强烈不推荐!!)
4)将libmy.so所在绝对路径追加入到/etc/ld.so.conf文件,使用sudo ldconfig -v 更新
7、实测
1、gcc -fPIC -c *.c -I ../include
2、gcc -shared *.o -o libMyCalc.so -I ../include
3、mv libMyCalc.so ../lib
4、gcc main.c -o app -L lib -l MyCalc -I include
5、ldd app
6、export LD_LIBRARY_PATH=./lib