在Windows系统下配置GNU Radio开发环境
一、前言
请严格安装本教程顺序安装与配置,否则可能出现错误。
操作系统:win10/win11
二、安装visual studio 2022
vs2022是前置依赖,主要用于编译OOT模块。
虽然GNU radio对编译器版本方面没有强制要求,安装C++编译器的主流版本都可以,但是建议使用vs 2022。因为自行配置编译环境非常复杂,本教程会使用编译工具conda-build和gnuradio-build-deps,该工具提供了一系列必备环境,并可自动完成环境变量配置,但是明确依赖vs2022,因此推荐安装vs2022。
三、安装Radioconda
Windows环境下使用GNU radio有多种版本,比较主流的是ettus公司定制的GNU radio和GNU radio社区维护的Radioconda。两者都集成了uhd驱动,都可以使用。由于Radioconda是社区维护的,更新比较及时,并且也是官方推荐版本,建议使用Radioconda。
直接安装Radioconda-2025.03.14-Windows-x86_64.exe,全部使用默认选项,确认安装在推荐的当前用户目录下,否则后期可能出现无法导入OOT模块等环境问题。

安装完成后,出现Radioconda prompt和GNU radio companion,前者是终端,后者是图形界面。

Radioconda虽然集成了uhd4.8.0.0,但没有USRP相关固件,需自行下载固件并配置环境变量。建议同时安装配套的uhd_4.9.0.0-release_Win64_VS2022.exe,安装完成后,会自动完成固件和环境变量配置。

四、修改conda源
使用默认的conda forge源比较慢,可能导致后续的编译工具和依赖安装失败,建议修改为国内镜像源。
在Radioconda安装路径下新建.condarc文件(如已有同名文件则直接修改内容)。

修改为以下内容(设置为清华源):
channels:
- conda-forge
- defaults
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
gnuradio: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
show_channel_urls: true
remote_max_retries: 10
remote_read_timeout_secs: 120
ssl_verify: true

可在Radioconda prompt终端中查看源信息:conda config --show-sources

清除缓存后即可使用新源:conda clean --all

五、安装编译工具
安装gnuradio-build-deps,安装完成后,每次打开终端会自动配置一系列环境变量
conda install gnuradio-build-deps -y

安装conda build,这是后续使用的编译工具
conda install conda-build

六、编译OOT模块
(1)网络环境
由于Radioconda依赖的numpy版本为2.X,而conda-build默认使用的numpy版本为1.26,使用默认配置编译生成的包无法在numpy 2.X环境运行,会导致安装成功后使用组件搭建流图运行时报错。
编译时,显式指定numpy版本(建议编译前修改ymal文件,同步指定numpy版本,详见下文)
conda build .conda\recipe --numpy=2.4.2

可使用conda list numpy查看numpy版本。

如果显式指定numpy版本编译后,使用模块时仍然报numpy版本兼容性错误,则需要修改yaml文件重新编译:修改模块源码路径…\gr-testModule\.conda\recipe中的conda_build_config.yaml、meta.yaml文件,指定Numpy版本,具体版本取决于当前环境中的numpy版本。


(2)离线环境
默认情况下,conda build每次执行编译都会联网检查依赖,这会导致在没有网络连接的环境中编译失败。要解决这个问题,可在编译时临时设定conda环境为离线:
set CONDA_OFFLINE=true
conda build .conda\recipe --numpy=2.4.2

注:需要在联网环境下执行过一次完整编译,将所有依赖全部下载到本地之后,才可进行离线编译,否则会因依赖缺失编译失败。
七、安装OOT模块
conda-build编译生成的文件存储在Radioconda安装路径下的~\conda-bld\win-64,例如:C:\Users\mm\Radioconda\conda-bld\win-64。安装文件后缀名为.conda,完整名称形式如“Gnuradio-testmodule-0.0.0.20260323.dev+glocal-py312h632a3cf_0.conda”

进入win-64路径,执行:conda install 安装文件名(支持TAB补全)

安装完成后,刷新grc界面即可在组件库中查看到新增组件。


编译中间文件储存在conda-bld文件夹下,一般为模块名字+一长串数字,安装完成后可手动删除。
八、卸载OOT模块
执行:conda remove 安装文件名(一般为gnuradio-模块名)

九、移植Linux环境下的OOT模块
将Linux OOT模块移植到Windows环境的流程如下:
在radioconda prompt终端中,使用gr_modtool工具创建模块,确保创建的模块文件结构与Linux下一致。
![]() | ![]() |
上图中,左侧为在radioconda中创建的模块文件目录,右侧为Linux中创建的模块文件目录。可以看到,radioconda中只多了一个.conda文件夹,其他的与Linux系统下一致。.conda文件夹中存放的是conda-build的配置文件。
将.conda文件夹之外的其他文件夹,全部替换为需要移植的模块对应的文件夹,再使用conda-build编译。
由于python文件夹中的CMakelist里硬编码了复制.so文件命令,在Windows环境中不存在此后缀,直接使用会导致copy失败无法完成测试,但不影响编译文件生成。这种情况下,安装文件储存在radioconda安装目录的~/conda-bld/broken中,可进入其中执行安装。
要解决测试失败的问题,需要修改python文件夹中的CMakelist文件,适配windows环境,具体修改方法需要考虑模块信息。完成CMakelist修改后,使用conda-build编译即可。
注:安装完成后即可在grc中使用该模块搭建流图,但并不代表流图可以正常运行。对于存在外部依赖的模块,还需要在radioconda中安装对应依赖才可运行。
全部回复 (0)
lium
社区创作者


