Linux链接器与加载器共享库搜索路径指定方式及异常排查
共享库搜索路径疑问:RViz编译时libcurl依赖问题
我尝试从源码构建RViz项目,运行构建工具时出现以下错误:
/usr/bin/ld: /opt/ros/noetic/lib/libresource_retriever.so: undefined reference to `curl_global_init@CURL_OPENSSL_4' /usr/bin/ld: /opt/ros/noetic/lib/libresource_retriever.so: undefined reference to `curl_easy_setopt@CURL_OPENSSL_4'
按照某帖子的建议,我删除了miniconda路径下的共享库/home/{USERNAME}/miniconda/lib/libcurl.so.4,并将其链接到系统路径下的/usr/lib/x86_64-linux-gnu/libcurl.so.4.6.0,问题得以解决。
但我对此存在疑惑:我查阅了ld.so(8)手册中共享库的搜索顺序,已排查以下几点:
- DT_RPATH动态段属性:通过
ldd命令查看/opt/ros/noetic/lib/libresource_retriever.so依赖的libcurl,结果显示链接的是系统路径下的库:ldd /opt/ros/noetic/lib/libresource_retriever.so | grep "libcurl" libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f254a722000) - LD_LIBRARY_PATH环境变量:我的LD_LIBRARY_PATH仅包含
/opt/ros/noetic/lib,未提及miniconda路径:echo $LD_LIBRARY_PATH /opt/ros/noetic/lib - ld.so.cache缓存文件:我的ld.so配置目录
/etc/ld.so.conf.d/中也没有miniconda相关配置:ls /etc/ld.so.conf.d/ fakeroot-x86_64-linux-gnu.conf ld.wsl.conf libc.conf x86_64-linux-gnu.conf zz_i386-biarch-compat.conf
请问我是否遗漏了其他共享库搜索路径的指定方式?
内容的提问来源于stack exchange,提问作者Xshell
相关产品推荐
相关产品推荐

