linux下动态库的制作和使用

动态库的命名规则:

lib + 库的名字 + .so

 

动态库的制作步骤:

1. 生成与位置无关的.o, gcc -fPIC -c *.c(所谓与位置无关相对静态库而言,静态库参与编译是放到代码段中参与编译,而动态库编译是只是动态库表示的符号参与编译,真正加载是在程序运行时,加载时的地址空间是根据函数调用的地址来决定的,不固定)

2. 将所有.o打包成.so, gcc -shared -o libMySum.so *.o

 

动态库的使用:

linux下动态库的制作和使用_第1张图片

以调用库libMySum.so为例

1. gcc main.c lib/libMySum.so 

2. gcc main.c -L lib -l MySum

 

找不到连接的动态库解决方法:

1. 将动态库文件放到系统的lib下

2. 将动态库文件的路径指定到LD_LIBRARY_PATH中,如export LD_LIBRARY_PATH=./lib[临时方案,关闭终端失效]

3. 修改配置文件,添加export LD_LIBRARY_PATH=/home/yc/linux-base/day03/lib到~/.bashrc最后,每次终端开启都会读该配置文件

4. Step1.找到动态连接器的配置文件(/etc/ld.so.conf)    Step2.动态库的配置文件写到配置文件中(添加库的绝对路径到文件末尾)   Step3.更新配置文件(sudo ldconfig -v)

 

动态库的优缺点:

优点1:执行程序体积小

优点2:动态库更新不需要重新编译程序(前提是接口没有变化)

缺点1:发布时需要把动态库文件提供给用户

缺点2:运行时加载,相对静态库来说加载速度较慢

 

注意点:

ldd:查看应用程序执行时依赖的所有的动态库

你可能感兴趣的:(Linux服务器)