【SDR】Windows环境下编译libiio

想写博客,最近博客园炸了进不来,在CSDN写了一篇瞬间犯恶心,链接全定位到gitee去了...

此版本不适合小白,适合有一定Cmake和msvc基础的朋友。如果需要编译好的版本,我会在最后附上我生成库的连接。

工具

Cmake GUI版

Visual Studio 2022

这两个很容易获取,不做赘述

必要库

libiio:https://github.com/analogdevicesinc/libiio

libusb:https://github.com/libusb/libusb

zstd :Releases · facebook/zstd

libxml2:https://github.com/GNOME/libxml2

vcpkg

icovn:https://github.com/win-iconv/win-iconv

网络好的情况下

打开命令行,拉取vcpkg:git clone https://github.com/Microsoft/vcpkg.git

这里直接下ZIP也可以用(vs版本似乎不可用),但是建议还是搞好网络,因为后面还有很多大便在等你。

到vcpkg目录下,命令行:

bootstrap-vcpkg.bat
vcpkg integrate install
vcpkg install libusb
vcpkg install zstd
vcpkg install libxml2

如果你的网络环境好这一步就够用,直接把packages目录下的生成库拖出来(我安装libxml2失败了,没有用这个方法,理论上是一样的,能下到什么库就用什么库就行,其他的可以用用别的构建方法,下面讲)

网络不好:

libxml2编译:
Cmake编译libxml2时注意到缺失库:iconv

继续去github上拉取,打开CmakeGUI,配置生成路径

组合拳:Configura-Generate-build目录下打开sln-右键INSTALL项目生成-去C:\Program Files\win_iconv把它掏出来,也可以自己添加到环境目录,这边不做赘述。喜欢用命令行的可以用命令行,GUI可以可视化设置缺失路径,所以我一般用GUI

同样的组合拳打开libxml2,添加一条CMAKE_PREFIX_PATH指向iconv目录(不然找不到,或者你自己添加环境目录)再进行Configura和接下来的步骤,如果已经Configura可以先delect cache

这样libxml2编译完了,如果觉得去C盘掏太麻烦,可以在CmakeGUI修改生成路径参数。

zstd:

官网下载的release版本直接解压

libusb编译:
打开源码目录下./msvc/libusb.sln 直接右键生成静态链接库版本即可

新建一个libiio文件夹,添加bin,include,lib文件夹

lib和bin文件在源码目录\build\v143\x64\Debug\dll下,直接复制即可

头文件在源码目录\libusb中,复制libusb.h到你的include下

这样libusb库也生成好了,能用vcpkg会更方便!

libiio编译

坑非常多!!!

1.正常打开CmakeGUI并设置build路径,正常config,跳出三条错误,找不到上面说的三个库

填入生成好的库路径:

不需要usb的也可以在with下面全部屏蔽了,直接编译可过:

一开始屏蔽后VS报错,原来是有坑,下面说。

config后出现libusb版本不正确的问题,但是我下载的已经是1.0.29版本,通过测试打印我生成库的版本号也没问题,无奈打开camklists屏蔽版本检测(后面莫名其妙能检测到了,很奇怪)

 

大坑:项目设置了一个BUILD参数,我在debug和release模式下编译疯狂报错,在VS项目中更换配置为RelWithDeInfo就好了,如果需要debug和release版本,前面的编译库也得编译对应版本,不过我没试。

到这里应该就成功了!

资源连接

最后附上我生成的库(失效留言):

通过网盘分享的文件:libiio.zip
链接: https://pan.baidu.com/s/1wmnew3mDpZkR_8Zn7VcZEw?pwd=fsg8 提取码: fsg8
--来自百度网盘超级会员v8的分享

posted @ 2025-06-11 20:10  Canicula-X  阅读(128)  评论(0)    收藏  举报