由于sigrok 界面太土,太难用,就想把DSview编译到windows下, 主要是windows用的人多啊。

DSview 有mac  版本, linux版本, windows版本, 但是windows版本收费。 所以下载了linux版本的源码,把DSview

在windows先编译, 遇到太多大坑, 坑的裤衩都没了, 此处省略内心的一万只草泥马。。。。。。。。。

当然也借鉴了sigrok 在msys + mingw32的编译过程。 但是结果是美丽的,哈哈哈,哈哈哈先上一张图

主要选择的环境就是以下5个, 不过每一个都是超级多的大坑。 后面简单写一些遇到主要的的坑, 如果有小伙伴也在做同样的事情,可以随时交流。

环境1: cygwin

环境2: mingw64

环境3: msys2

环境4: msys2 + mingw32

环境5: msys2 + mingw64

环境1: cygwin

其实首先选择的不是这个环境,而是sigrok的32位编译环境。but 第一次失败了, 就想到这个相对成熟的cygwin,软件包全,

安装方便,so开始吧

第一步,下载cygwin(此处不再给链接) 请小伙伴自行下载。

第二步, 肯定是配置了,由于本人 把ubuntu用的炉火纯青,对各个软件包了如指掌(此处来点掌声),所以配置起来就很容易了, 这个cygwin安装的时候就一步一步,直到选择源的地方, 一定要选择constant那个源,国内的阿里, 搜狐, 网易,中科大,清华等等全不靠谱(血的教训啊)。 这里简单提一下,当时觉得阿里 网易的好用,就选择的阿里 网易的,结果到安装的时候 差的软件包有点多,找不到就找后面的源,导致选择一个特别慢的源,好多个G的软件包啊,几十K的速度,对于IT男来说绝对不能忍啊, 所以自作聪明的还尝试了其他的源,尼玛 都是坑啊。 所以就选择最上面的 那个constant的源, 软件包特别全,速度么平均 5MB吧。

第三步: 解决了源的问题,就要考虑安装软件了。 首先如果你是一个像我一样玉树临风,对各种软件包了如指掌的MAN,你就可以自己选择了, 不然就乖乖的 选择上 lib + devel 还有python qt, libftdi, fftw, libusb, libtool, libzip等等,这些基本上就差不多了也不会差太多。 好了漫长的等待,这里就有一个坑, 后面详细说是mpfr这个软件。

第四步: github上下载DSview。 然后开始编译,编译过程是 libsigrok4DSL, libsigrokdecode4DSL, DSView

好开始第一个 libsigrok4DSL, autorun, configure, make make install。 but autorun的时候就会缺软件包了,具体忘记了

如果不缺就下一步, 缺的话就去cygwin 里继续安装(cygwin是可以重复安装的,所以继续执行cygwin的安装程序,就可以)当然你也可以用apt-cyg 这个是一个脚本, 网上随便都能搜索到下载位置, 下载下来 加上可执行权限, 拷贝到/usr/bin下就可以了

使用apt-cpy --help, 查看所有的命令参数, 可以搜索, 删除, 安装等等操作。

继续configure 这里会遇到少很多软件包, 最主要的是glib,可能还会出问题, 所以如果遇到就从新安装glib-2.0 glib-2.0-devel这两个包, 不过configure的时候还会有无法执行GLib验证程序, 没关系, 前面glib2.0已经检测到了,所以忽略他吧。

后面还有 libzip无法找到这个包, 这个也很神奇, 因为已经安装了,但是他不认识,没有这个包无法configure完成, 怎么办,

作为一个linuxer, 当然是源码安装了, 说干就干,源码下载libzip, 我下载的是1.5.x的版本, 然后cmke configure make make install, 如果你觉得这样就OK了, 错, 这样安装完依然找不到, 所以在configure的时候 要指定安装目录, configure --prefix=/usr, 必须安装到这里, 不然你还要设置一大坨 乱七八糟的环境变量, 相信我, 你肯定会疯掉的因为这些环境变量, 至少我为了省事直接这么干的。 libzip 有了, 这会发现 libftdi fftw 也木有,WQNMLGB, 继续源码走起, 安装位置依然是 /usr,怎么样感觉是不是很轻松。 这是因为你在看这个文章 啊哈哈哈 哈哈哈。最后还会有提示 udev libtool等等 这些根据你的实际情况如果生成了makefile, 就不用关心了。

好下一步, make 发现卧槽 glib.h 找不到, 嗯? glib 都装了好几次了,竟然还找不到。好吧,其实是编译搜索路径为 /usr/include, 这样找到glib。h做链接, ln -sf /usr/include/glib-2.0/glib.h glib.h

然后是glib找不到, 继续做链接, ln -sf /usr/include/glib-2.0/glib glib

然后glibconf.h找不到 还是做链接,but 这个glibconf.h不在/usr/include下,在哪里呢卧槽 竟然藏在了 lib下面

/usr/lib/glib-2.0/include/glibconfig.h  尼玛 头文件竟然到处乱飞。

下一步make 这时你会看到 一句中文(卧槽,为什么是中文提示) xxx.c line xxx 所拥有的属性在当前环境下不可见。 what? 这是个什么鬼, 当时把我也整懵逼了, 不管他先编译再说。最后就是每个文件都有问题。当然了不影响安装使用,继续。 注意这里也有一个坑,就是这句警告,目前在cygwin上无解,必须改一下属性。

然后下一个libsigrokdecode4DSL 一样的问题。 然后编译DSview。

DSView 这个问题很多, 我已经记不太清那么多了。 首先camke 就有很多问题, cmake的过程就是各种不通过,检测libusb,libzip, 发现里面设置了好多环境变量,我对cmake确实不太熟,也不知怎么回事, 就export,然而并不是想的那样, 好吧暴力点直接在cmake里对应的地方改, 当然应该不是cmakelists。txt文件, 是另外一个,直接修改成目录,这样就可以了,后来查了cmake 可以直接在cmkelists。txt中set()环境变量。好解决掉各种 cmake问题, 具体问题具体分析, 尝试编译的小伙伴如果遇到难题, 可以直接发给我, 可能我能帮助你以下。 哈哈是不是很自恋。

最后你会遇到一大堆 xxx 函数 未定义,什么什么的把, 看着这个函数好熟悉啊, 搜索以下 竟然是 libsigrok4DSL 和libsigrokdecode4DSL中的函数。 应该是链接的时候错了, 打开 CMakeFile/link.txt ,看一下 嗯 最后也有-llibsigrok4DSL啊 ,怎么就不行呢, 去看看安装的库有什么问题, 发现 只有libsigrok4DSL.a 没有dll.a, 那就拷贝一份。 make 链接还是原来的问题。

好回到之前的两个坑,一个mpfr, 一个是 当前配置下属性不可见的的。 回到libsigrok4DSL 另外一个库是一样的操作。 就以一个库为例。 再次编译,查资料,后来发现了一个fvisiable的属性, makefile 写的是hidden, 隐藏的, 但是隐藏的就一定隐藏么? 不一定,查这个属性用法,原来是有其他地方定义了这个属性。 SR_PRID这个定义为hidden,结合vidiable的用法, 就会发现, 凡是使用这个的地方都是不可见的,然而链接失败的函数也是这个属性的, 好把这个属性hidden 改成default, 理论上不会有啥问题。同样再打开--verbose 看到完整的编译过程。

会发现mpfr的版本也不匹配,怎么办, cygwin继续安装找到合适的版本选中,卸载掉这个不匹配的版本。 然后编译libsigrok4DSL, what, 版本没变, 我了个去, 再次尝试删除安装, 卧槽一样,版本没变,没变。。。。。。 一百万头草泥马,奔腾而过。 我是一个追求完美的人 直接全部删除整个环境, 从新安装。 又是一个漫长的过程。 然后重复之前的操作,

编译链接通过, perfect,DSView.exe就在眼前了, 我注视着她, 内心泛起波澜,运行我就要成功了, 执行,卧槽,缺少库cygwin libqt等等各种dll文件, 卧槽 怎么办,make install 位置依然是/usr/local/下, 这个真操蛋,cygwin毕竟不是linux,所以为了减少坑, 还是老老实实的改掉这个安装路径吧 改到/usr下。执行 以下就是结果, 卧槽。 这个还真是复杂啊。 我对Cygwin这个玩意真不太熟悉, 这个问题,研究了一下我就放弃了,这个好像和X11也有关系, 太特么复杂了。不搞了,以后有时间在搞。

$ DSView.exe
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-ivan'
qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect to any X display.

好了到此 cygwin能顺利编译出来了, 但是不能用, 是不是感觉一万头草泥马奔腾而过, 小伙伴别着急,我这是仅仅记录我的基本过程, 哪怕就使用cygwin这个玩意, 我就删除安装不下10次, 才编译出来的,以上问题,也可以解决, 我觉得肯定麻烦, 就换下一个环境了, 因为浪费的时间太久了, 删除安装一次,配置完成,在编译出来, 基本上就是7 8个小时了, 所以放弃。后面有时间在整,删除是因为软件在安装卸载过程中,不能够真正的安装或者卸载,具体原因不明,我用的是win10的系统。

环境2:

这个简单,安装以后,没找到怎么用, 直接pass。  哈哈哈哈哈, 是不是很二,是不是很傻, 小伙伴们是不是又一万头草泥马奔腾而过。 别急, 继续。

环境3:

msys2 : 这个环境也很有意思, 我先查了很多资料,确定了如何使用以后,才安装的的,而且他自带mingw32/64环境, 这里也特么是一个大坑。 妈的,差点整懵逼了。

首先我安装这个软件,开始不太了解,就差什么包装什么包, 我本意是编译64bit版本,所以忽略32位的。

此时的问题就是我忽略了一个问题, msys提供的shell,只是msys自己库路径的基本都是指向/usr/bin /usr/lib/ /usr/include下的,这样在使用一些库的时候,或者手动编译到的时候,就要把目录指向/usr下。 而mingw64提供的shell, 所有路径都指向/mingw64/下, 这样一些软件 编译的时候就必须指向 /mingw64下, 新手注意,一定要自己指定安装路径,不然都会装到/usr/local 或者 /mingw64/local下, 这样你还需要配置lpath 或者 LD_LIBRARY_PATH,而且不一定好用, 这就是这套环境傻的地方,有些路径你指定了,但是不生效,所以我也偷懒了直接装到了 /usr 或者mingw64下。

第一安装: 既安装mingw64的软件包, 也安装msys的,使用的shell是msys的,但是这两个本身理论上是两套环境,但是其实又要相互帮助, 这也是我不理解的地方。 好了言归正传, 安装的软件和上面差不多, 但是libzip这个玩意,在msysshell里 安装mingw64的,在使用的时候竟然能够找的到, 真是一个没有原则的软件啊。

无非就是安装,glib, qt, libusb, ftdi, fftw, 当然在msys下 无法安装libtool 和 udev。 好这些库按照以上方法安装完成开始编译DS。 第一步仍然是 libsigrok4DSL, 问题依旧,当前环境可见属性在当前配置下。。。。无所谓继续, 这个问题,等到后面在解。 如果安装上面的直接把hidden变成default,我觉得不靠谱, 因为在注释的地方明确写了 不作为API, 因为linux 我已经正常编译通过了, 使用没问题, 所以这个问题一定不是这样解决的, 但是就算你改了, 也不会有问题, 因为我们不是要在互联网上用, 所以不存在安全注入等问题。 继续编译,直到编译DSView的时候,这个时候cmake 怎么都无法生成Makefile。

因为cmake不正确, 具体哪里不正确,说不出来,使用mingw64的cmake更是如此,提示没有cl, 网上有人说自己安装一个然后配置环境变量, 我试过了一样的, 还有一种可能第一次我在装这个环境的时候经过了反复的安装卸载各种软件包, 把整体环境搞乱了, 怎么办,怎么办, 删除,从新安装。

这时参考了sigrok的编译环境, 发现它用的mingw32的, 我就在想我是不是应该配置一套这个玩意啊, 说干就干, 开始配置32的环境,配置了一部分后发现32的环境太二了, 缺少好多包,根本不全,而且32的ranlib这个玩意,一直提示在安装的时候出错,提示xxx位置上已经有了xx.a包, 无法改名, 我日,我尝试了好多次都一样,这样自己编译的库装步完善啊,这个怎么搞。反复多次,我看提示makefile有错,就直接把makefile改掉了, 安装完成, 这里具体改了什么, 小伙伴们可以自己思考一下, 其实很简单的。 同样几个手动编译的库都要这样做,libsigrok这俩库也要这样做, 但是libsigrokdecode4DSL出问题了, 这个家伙在链接的时候一直提示python的问题, 就是有一个头文件同时声明了两种格式的一个变量, 我看了一下哈真是,毛线啊, 那是#define,这个32太傻了, 就这一个问题就折腾了好久,后来就因为这个问题, 我放弃了, 首先32的本身库就不全,所以折腾一天后,果断放弃。

然后仔细思考,msys本身的软件包就够用啊,so决定不安装任何一个mingw64的包,干起来。

删除整个环境, 到这里我已经反复删除环境好几次了,哇哇哇。 真是能折腾啊, 不过sygwin编译出来了,就让我看到了希望,一定可以编译出来,而且正确执行。

从新安装环境,安装一切需要的软件包,msys2的安装包方法,自己百度把,很多写的很清楚,常用的命令也就那几个。 开始新一轮, 结果一切照旧, cmake还是不行,具体问题忘记了, 小伙伴如果遇到无法解决的,或者是什么奇怪问题,也可以交流。

总之放弃了, 我心想,cygwin64的可以,那么mingw64应该也可以,好这次只安装mingw64的库,开始干起来,一步一步操作,包括glib头文件找不到,还是要做链接, 但是这个链接似乎是直接拷贝,没去深究,总之那样操作就可以,没问题。 安装编译各种找不到的包, 一切准备好了, 看着配置好的环境,心里有些期待,

编译libsigrok4DSL,没修改任何东西,开始看到了么,没有再提示 当前环境属性不可见了,哈哈哈,这就成功的一步了, 继续libsigrokdecode4DSL,一样的, 安装,到这里都没有问题, 编译libzip, libusb 这些cmake的时候都没问题呢。

下一步DSView了,最后一步,生死就看他了, camke, 嗯? 我去这是什么情况,cl找不到,C,CXX路径找不到,指定g++, gcc也不行,提示全路径错误,我去,其他软件都没有这个问题, 这里就有了,简直傻逼,后来网上查安装cmake, 我还真下载了一个安装, 结果你猜怎么样, 直接把项目给我整成VS的,我去,我一看可以啊, 来吧,下载一套VS2019最新的, 又是一个小时的等待, 完成了打开项目,我去生成, 结果他在检测库和头文件内容,尼玛, 这怎么可能对呢, 全部是类linux环境的库形式啊,几万个warning,失败, 几次以后我就放弃。

后来发现cmake使用的是/mingw64/bin/cmake, 我心想这个cmake认准了 VS版本了,这怎么行,完全不一套啊, 卸载这个cmake,然后改掉windows版本cmake路径, 执行camke还是一样, 卧槽,我都卸载了还能执行, 顿时 一百万草泥马奔腾而过啊, 一万头已经无法代表我的心情了。  然后安装msys2的cmake, 执行cmake 嗯? 有戏, libzip库找不到, CMakeLists.txt 设置一个环境变量, libusb找不到,继续设置,哈哈makefile生成了, 但是觉得这个问题很大啊, 因为所有库都是 mingw64下的gcc编译出来, 这样会不会又问啊, 我也很怀疑,不管了开始make, 卧槽编译了生成cpp文件出错,多次尝试全部出错, 看出错原因是moc.exe的问题, 无法找到头文件,我去头文件就在那里放着呢? 怎么就是不认识, 想了好久也没头绪,查了资料也没头绪, 就在我一筹魔战的是时候,想到了cygwin, 去看看他的makefile, 一看果然又问他, msys2的camke 使用的是/usr/bin/moc,  Cygwin使用的是/usr/qt5/bin/moc, 赶紧看看mingw64的qt有没有这个moc, 果然有,全部替换, make,卧槽过去了,过去了, 然后开始编译,咔出错了, 什么原因,cpp文件找不到, 这个是怎么回事, 回到文件夹看,我去竟然是moc在执行的过程中,有些执行失败了,没把cpp 生产出来。

真是一个个坑你没商量的 软件啊, 卧槽, 经过大量思考, 我直接把cygwin下面生成好的cpp拿过来了,反正mekefile有了, 直接编译就好了啊, make 这次真过去了哈哈哈。 一直到最后又出现了最后链接不过的问题, 打开link.txt, 加上libsigrok4DSL.a,和 linsigrokdecode4DSL.a , 然后make, 找不到python的库, 继续添加 -lpython3.6m, 因为我的是3.6, 小伙伴根据自己的环境添加。 make 成功了。  哈哈哈

至此编译完成, 执行, 嗯找不到config文件, 然后给出了使用命令行的Usage, 说明已经能够正常运行了,只是缺少配置文件而已, 因为对应的库可能没有分配好, make install 一下, 卧槽 又装到/mingw/local/bin下了, 真是日了狗了, 修改cmake_install文件, 安装到目录/mingw64/ , 因为mingw64的库都在指向这里的。 运行DSView 怎么样,看到了上图的界面了么!! 到次出成功。

但是 不理解的是 mingw64下的cmake 竟然要用msys2的cmake协助生成Makefile, 这也是这俩环境相互依赖, 互相帮助的结果。 到此处其实上面提到的问题还没有解决, 例如 moc那个, cmake这个, 还有就是cygwin的X display, libzip, libusb的环境变量,问题, 在Linux下这些都没问题。 所以按照以上的方法肯定能编译出来, 而且并没有去修改任何代码执行逻辑(hidden那个我觉得不算是修改),所以编译出来的肯定没问题。 中间的各种环境变量等等,可能这就是模拟类linux环境的原因吧, 无法真正做到,模拟,还要兼顾 对win32的转换, 能够做到这样真的很不错了

最后致敬 这几个项目的贡献者, 如果没有他们, 我们就无法做到这些。

windows 下编译 DSview 记录相关推荐

  1. 记录 Windows 下编译一个开源 SM9 签名验签 C 程序的过程

    注:本文不讨论算法具体实现细节,只介绍如何编译一个现有的程序实现. 在商用密码检测中心( 链接:http://www.scctc.org.cn/index.aspx )的网站上,"下载中心& ...

  2. Windows下编译Chrome V8

    主要还是参考google的官方文档: How to Download and Build V8 Building on Windows 同时也参考了一些其它的中文博客: 脚本引擎小pk:SpiderM ...

  3. Windows下编译语音识别引擎Wenet

    Windows下编译语音识别引擎Wenet 一.Wenet简介 二.Wenet首次编译过程 2.1下载第三方库源码 2.2替换软链接 2.3下载gRPC的third_party 三.Wenet第二次编 ...

  4. Windows下编译OpenCV+opencv_contrib

    文章目录 前言 一.写在前面重要的事 二.正文 1.安装步骤 2.编译及配置 总结 前言 在学习OpenCV特征检测与匹配时,因为OpenCV3.x版本将SIFT.SURF.ORB算子等的源代码从官方 ...

  5. 实战Windows下编译Opencc 1.0.5

    Opencc是中文简繁转换开源项目,支持词汇级别的转换.异体字转换和地区习惯用词转换(中国大陆.台湾.香港). 特点 严格区分「一简对多繁」和「一简对多异」. 完全兼容异体字,可以实现动态替换. 严格 ...

  6. Linux及Windows下编译exosip和osip2源码

    eXosip库及编译流程简介 1.eXosip库的简介 1.1.osip简介 osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层 ...

  7. Windows下编译 Hadoop

    Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...

  8. Windows下编译tensorflow-gpu教程

    这两个也要看: https://zhuanlan.zhihu.com/p/29029860 https://zhuanlan.zhihu.com/p/34942873 Windows下编译tensor ...

  9. Windows下编译TensorFlow1.3 C++ library及创建一个简单的TensorFlow C++程序

    参考:https://www.cnblogs.com/jliangqiu2016/p/7642471.html Windows下编译TensorFlow1.3 C++ library及创建一个简单的T ...

最新文章

  1. 《Nature》发文:好导师的16个标准
  2. matlab2018无法使用qcat,解决Matlab 2018a源代码的中文支持问题
  3. 导致oracle 控制文件坏,异常断电导致ORACLE控制文件等受到破坏的处理
  4. 中国内地楼市泡沫严重 租售比1000倍超美国
  5. WPF下递归生成树形数据绑定到TreeView上
  6. java反射三种方法_Java基础入门要学哪些 怎么掌握反射和枚举
  7. [原]从一个链接错误探究GCC的链接库顺序
  8. Symantec 赛门铁克招聘 Security Response Manager
  9. 10分钟了解Activity工作流
  10. [转]谈爬虫反爬虫套路
  11. linux qt 找不到 lgl,c ++ - Qt:找不到-lGL
  12. 适合mysql的网络存储_mysql 选择合适的存储引擎
  13. 公司的报表工具太难用,我三天撸了个Excel工具,运营小姐姐直呼太好用了,现已开源!!(建议收藏)
  14. Matlab - Solidworks 机器人建模(5)—— 给模型添加摩擦力
  15. firefly AIO-RK3399J Linux SDK编译报错解决
  16. NSUserDefaults见解
  17. RXJava2响应式编程框架设计三---Rxjava2背压、生命周期
  18. python基础学习笔记13:面向对象的三大特性
  19. vue2 使用 alias 简化路径
  20. 五个主流以太网技术比较

热门文章

  1. 来自北京大学NOIP金牌选手yxc的常用代码模板2,图灵学院和享学课堂
  2. MyCat做MySQL负载均衡(享学课堂,咕泡学院听课笔记)
  3. 腾讯开放平台-QQ互联认证-未提交审核
  4. MySql安装成功后没有my.ini文件怎么办?
  5. 番茄工作法计时器发布
  6. excel表格分割线一分为二_PDF转Excel的Python代码
  7. 《系统化思维导论》读书心得
  8. puppy linux 教程,Puppy Linux 中文支持包制作方法
  9. STM32通过DMA方式实现串口通信
  10. 互联网测试校招系列2:准备越充分,机会越大!