1.创建库.c .h文件
2.编写Makefile文件
3.make之后形成.so文件
4.make output,形成mylib
5.把mylib拷贝到test里面
mv mylib /test
6.编译
gcc main.c -I mylib/include -L mylib/lib -lmymethod
形成a.out
但是直接执行会出现以下问题
很显然没有找到动态库
7.解决加载找不到动态库的方法
1.拷贝到系统默认的库路径 /lib64 或者/usr/lib64/
2.在系统默认的库路径/lib64 /usr/lib64下建立软连接
sudo ln -s /home/wangxiaodan/lesson23/test/mylib/lib/libmymethod.so /lib64/libmymethod.so
3.将动态库的路径添加到LD_LIBRARY_PATH中
echo $LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/wangxiaodan/lesson23/test/mylib/lib
4.在/etc/ld.so.conf.d建立自己的动态库路径的配置文件,然后重新ldconfig即可
结果:
实际情况,最常用的是第一种!
结论:1.动态库在运行时需要加载,静态库不需要
2.常见的动态库被所有的可执行程序(动态链接的),都要使用,动态库又叫做共享库
所以,动态库在系统加载之后,会被所有进程共享!!!