Linux下动态库的生成与链接
?? Linux下动态库的名称为 xxx.so ,其中 so 为Shared Object(共享对象)的缩写,即可以共享的目标文件。在链接动态库生成可执行文件时,并不会把动态库的代码复制到执行文件中,而是在执行文件中记录动态库的引用。在程序执行时,再去加载动态库文件。
Linux下生成动态库的步骤
-
编写动态库源文件; -
将一个或多个源文件编译链接生成动态库; -
将动态库放入默认的动态库目录目录或指定动态库的目录,即可在应用程序中调用动态库的函数接口; -
通过 -L
-lxxx的gcc选项链接生成的libxxx.so
编译生成动态库
gcc -o libxxx.so -shared xxx.c
-fPIC:编译选项,用于生成与路径无关的代码。
-shared:链接选项,用于生成动态库而不是可执行文件
配置环境变量
- 临时使用,关闭当前shell后自动取消设定:
export LD_LIBRARY_PATH=/opt/lib
-
永久使用,重启计算机依旧可以使用: 在/etc/ld.so.conf.d/下创建*.conf文件 在文件中键入/opt/lib 命令行键入sudo ldconfig -
使用动态库
gcc test.c -L /opt/lib -lxxx -Wl,rpath=/opt/lib
😶 🥙 🌏
|