You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 03:34:52