net*_*ain 3 libraries dependencies dynamic-linking shared-library
如果我调用以下命令:
ldd mylib.so
Run Code Online (Sandbox Code Playgroud)
这会产生一些类似的东西:
libopencv_features2d.so.4.1 => /usr/local/lib/libopencv_features2d.so.4.1 (0x00007f83dee6b000)
Run Code Online (Sandbox Code Playgroud)
如果我复制/usr/local/lib/libopencv_features2d.so.4.1
到我当前的工作目录中,那么我希望 ldd 显示=> ./libopencv_features2d.so.4.1 (0x00007f83dee6b000)
相反,它仍然将其解析为/usr/local/lib
。这是为什么?像这样的系统依赖是如何解决的?是否还有一种方法可以影响解决依赖项的方式?我可以强制它解析到我的本地目录吗?
动态链接器会在各种位置查找库,但默认情况下这些库不包括当前目录。在 Linux 上,列表是
LD_LIBRARY_PATH
(如果有);/etc/ld.so.cache
;/usr/lib
等)。上面的链接提供了更多详细信息。
您可以通过导出来影响解决依赖项的方式LD_LIBRARY_PATH
;特别是在您的情况下:
export LD_LIBRARY_PATH=.
Run Code Online (Sandbox Code Playgroud)
(不要将其设置为该值。)
归档时间: |
|
查看次数: |
1274 次 |
最近记录: |