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

使用HackRF捕获GNSS信号时遭遇libgnuradio-runtime库加载异常

问题分析与解决方案

核心原因

你的gnss-sdr二进制文件编译时依赖的是Git开发版本的GNURadio库(3.10.6git),但系统实际安装的是正式发布版3.10.1,两者库版本不匹配,导致动态链接器找不到指定的库文件。

解决方案

方案1:重新编译gnss-sdr,绑定系统已安装的GNURadio 3.10.1

  1. 清理旧的编译产物:
    rm -rf /home/gnss/gnss-sdr/build
    
  2. 重新配置编译环境,确保链接系统正式版GNURadio:
    cd /home/gnss/gnss-sdr
    mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DGR_OSMOSDR_DIR=/home/gnss/gnss-sdr/gr-osmosdr/build ..
    

    注:如果gr-osmosdr是安装在系统默认路径(如/usr/local),可以省略-DGR_OSMOSDR_DIR参数

  3. 重新编译并安装:
    make -j$(nproc)
    sudo make install
    
  4. 直接运行gnss-sdr(无需LD_PRELOAD,只要gr-osmosdr已正确安装到系统库路径):
    gnss-sdr -c hackrf_GPS_L1.conf
    

方案2:临时指定Git版GNURadio库路径(适合不想重新编译的场景)

  1. 找到Git版GNURadio库所在的目录(比如你之前编译GNURadio源码的build/lib路径)
  2. 将该路径添加到动态链接器的搜索路径:
    export LD_LIBRARY_PATH=/path/to/git/gnuradio/build/lib:$LD_LIBRARY_PATH
    
  3. 再次执行原命令:
    LD_PRELOAD=/home/gnss/gnss-sdr/gr-osmosdr/build/lib/libgnuradio-osmosdr.so /home/gnss/gnss-sdr/build/src/main/gnss-sdr -c hackrf_GPS_L1.conf
    

额外排查建议

  • 用ldd /home/gnss/gnss-sdr/build/src/main/gnss-sdr命令查看二进制文件的所有依赖库,确认是否还有其他版本不匹配的库
  • 检查gr-osmosdr的编译日志,确保它是基于系统安装的GNURadio 3.10.1编译的,而非Git开发版

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:12