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

树莓派Ubuntu系统UHD版本冲突:如何移除旧版本UHD_4.1.0.5-3

解决UHD版本冲突问题

一、先确认系统里的UHD版本与安装路径

先搞清楚当前系统里的UHD包分布:

  • 查看apt安装的UHD相关包:
    dpkg -l | grep uhd
    
    从输出里找到旧版4.1.0.5-3对应的包名,比如libuhd4.1.0、libuhd-dev这类。
  • 确认手动编译的4.4.0.0安装位置(默认在/usr/local下):
    ls /usr/local/lib/libuhd.so*
    ls /usr/local/include/uhd
    

二、彻底移除系统安装的旧版UHD

直接卸载apt安装的旧版本:

  • 卸载主包和开发包(替换成你查到的实际包名):
    sudo apt remove --purge uhd libuhd-dev libuhd4.1.0
    
    如果连带装的系统版GNU Radio也不需要,一起卸载:
    sudo apt remove --purge gnuradio gnuradio-dev
    
  • 清理残留的配置和无用依赖:
    sudo apt autoremove --purge
    
  • 检查是否有漏网的旧版库文件,有的话手动删除:
    find /usr/lib -name "libuhd.so*"
    sudo rm -f /usr/lib/aarch64-linux-gnu/libuhd.so*  # 替换成你找到的旧版路径
    

三、确保手动编译的UHD被系统优先识别

卸载旧版后,要让系统优先用你装的4.4.0.0:

  • 更新动态链接库缓存:
    sudo ldconfig
    
  • 验证默认UHD版本:
    uhd_version
    
    如果输出不是4.4.0.0,就手动添加本地库路径到链接配置:
    sudo echo "/usr/local/lib" > /etc/ld.so.conf.d/local.conf
    sudo ldconfig
    
    再重新运行uhd_version确认。

四、调整你的C++代码编译配置

你的代码加载旧版,大概率是编译时链接了系统旧库,要指定手动安装的UHD路径:

  • 如果用CMake,修改CMakeLists.txt:
    set(UHD_DIR "/usr/local/lib/cmake/UHD")
    find_package(UHD REQUIRED)
    include_directories(${UHD_INCLUDE_DIRS})
    target_link_libraries(你的可执行文件名 ${UHD_LIBRARIES})
    
  • 如果用g++直接编译,手动指定头文件和库路径:
    g++ your_code.cpp -o your_executable -I/usr/local/include -L/usr/local/lib -luhd
    

五、验证问题是否解决

编译完代码后,查看它依赖的UHD库:

ldd ./your_executable | grep uhd

如果输出显示链接到/usr/local/lib/libuhd.so.4.4.0,再运行代码,应该就不会崩溃了。

内容的提问来源于stack exchange,提问作者Sorin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 23:12:12