背景
经常需要导出动态库,最场景的方式是指定LD_LIBRARY_PATH。本文介绍3中
LD_LIBRARY_PATH
这种方式临时生效
export LD_LIBRARY_PATH=/path/to/mylibdir:$LD_LIBRARY_PATH
使用ldconfig和/etc/ld.so.conf
在配置文件 /etc/ld.so.conf 中指定动态库搜索路径。每次编辑完该文件后,都必须运行命令 ldconfig 使修改后的配置生效 。
以管理员权限打开/etc/ld.so.conf文件在其中添加,或者:
在/etc/ld.so.conf.d/目录下创建一个新的.conf文件,文件内容是动态库的路径
然后使用sudo ldconfig
,使其生效
然后使用sudo ldconfig -v
查看是否包含需要的库
比如查看json库:
比如doca的配置:
通过gcc参数指定运行时动态库搜索路径
gcc -o test test.c -L. -ltest -Wl,-rpath=.:..:libdir
gcc:GCC编译器的命令。
-o test:指定输出的可执行文件名为test。
main.c:要编译的源代码文件。
-L.:告诉编译器在当前目录(.)中查找库文件。
-ltest:告诉编译器链接名为libtest.so(或libtest.a,取决于是动态库还是静态库)的库。
-Wl,-rpath=.:…:lib:这是一个传递给链接器(ld)的参数,-Wl告诉GCC这个参数是给链接器的。-rpath指定了运行时动态库搜索路径,.表示当前目录,…表示上一级目录,libdir表示名为libdir的目录。这些路径将被用于在程序运行时搜索动态链接库。使用:来指定多个搜索路径