
生成与位置无关的代码
gcc -c -fpic add.c div.c mult.c sub.c
得到动态库
gcc -shared add.o div.o mult.o sub.o -o libcalc.so

项目目录

把so文件拷贝到lib目录下

gcc main.c -o main -I include/ -L lib/ -l libcalc.so
-I 头文件路径
-L动态库路径
-l(小L)动态库的名称
找不到共享库的位置


编译时不会报错,运行时报错。
运行时需要把动态库加载到内存中
当我们的程序使用动态库的一个API的时候,就会查找动态库的绝对路径,然后加载到内存当中。

添加动态库的绝对路径到环境变量


打开系统的环境变量
vim .bashrc
添加so的绝对路径

使配置文件生效
. .bashrc 或 source .bashrc
打开配置文件
sudo vim /etc/profile
添加动态库的绝对路径

使之生效
source /etc/profile

至此,配置好啦
先删除/etc/profile的so的绝对路径

然后,刷新一下
. /etc/profile
接下来,开始配置:
sudo vim /etc/ld.so.confsudo ldconfig使之生效
这个就是打开/etc/ld.so.conf之后的效果,将so的绝对路径添加进去

检查一下是否成功添加,也可以成功运行

lib,/usr/lib包含了系统自带的动态库文件,如果重名了的话会被替换,系统程序可能出问题