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

编译UHD init_usrp示例时CMake无法找到UHD的问题求助

编译UHD init_usrp示例时CMake找不到UHD的解决办法

问题概述

编译../host/examples/init_usrp路径下的UHD init_usrp示例时,CMake报错无法定位UHD:

  • 示例的CMakeLists.txt包含find_package(UHD 4.1.0 REQUIRED)语句
  • 已从master分支编译安装UHD-4.4.0.0,使用CMake版本3.26
  • 错误根源是UHDConfig.cmake未设置UHD_LIBRARIES和UHD_INCLUDE_DIRS变量,导致get_filename_component执行失败
  • 尝试替换为GNU Radio的FindUHD.cmake后问题仍未解决

解决步骤

1. 确保CMake能找到UHD的配置文件路径

UHD编译安装后,配置文件默认在/usr/local/lib/cmake/UHD或/usr/lib/cmake/UHD。

  • 先检查环境变量CMAKE_PREFIX_PATH是否包含UHD的安装前缀(比如/usr/local):
    echo $CMAKE_PREFIX_PATH
    
  • 如果没有,执行CMake时手动指定路径:
    cmake -DUHD_DIR=/usr/local/lib/cmake/UHD ../host/examples/init_usrp
    
    或者临时设置环境变量:
    export CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
    

2. 调整find_package的版本匹配规则

你的UHD版本4.4.0.0高于要求的4.1.0,但可能因版本格式识别问题导致匹配失败。修改示例的CMakeLists.txt:

  • 要么直接去掉版本约束:
    find_package(UHD REQUIRED)
    
    要么强制使用UHD自带的配置文件:
    find_package(UHD 4.1.0 CONFIG REQUIRED)
    

3. 验证UHD安装后的配置文件完整性

打开UHD安装目录下的UHDConfig.cmake(比如/usr/local/lib/cmake/UHD/UHDConfig.cmake),确认里面有正确的变量定义:

set(UHD_INCLUDE_DIRS "/usr/local/include")
set(UHD_LIBRARIES uhd)

如果没有,说明UHD编译安装过程有问题。重新编译UHD时,指定安装路径并完整执行安装:

cd uhd-host
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
make -j$(nproc)
sudo make install

4. 清除CMake缓存后重试

旧的缓存可能残留错误配置,先清理再重新配置:

cd ../host/examples/init_usrp
rm -f CMakeCache.txt && rm -rf CMakeFiles
cmake ..

5. 手动指定UHD路径(终极方案)

如果以上方法都无效,直接在示例的CMakeLists.txt里硬编码路径:

# 替换为你的实际UHD安装路径
set(UHD_INCLUDE_DIRS "/usr/local/include")
set(UHD_LIBRARIES "/usr/local/lib/libuhd.so")

include_directories(${UHD_INCLUDE_DIRS})
target_link_libraries(init_usrp ${UHD_LIBRARIES})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:41