#申请原创#
@21小跑堂
初学iCatch方案的软件编译 作为一名初学者来说,尤其是对这软件方面知之甚少的,去问熟人同事又不好意思,上网查又查不到这方面的知识,那么就很有必要来了解这些基础知识了! 同样做为一名做硬件的,去找软件同事拿SDK还有问一些基础问题,多少还是觉得不好意思的。没办法,想学下的话,必须得去找他们要了,后面还是厚着脸皮去找他们要了些基本的SDK和工具(可见脸皮厚点有时还是必须的,哈哈!)。 既然基础工具拿到了, 那就开始来学习吧! 注:下面分析的这些问题是困扰作者几周时间后才遂渐明了的,希望能对人有所帮助! 首先要进服务网站学习如何搭建编译环境,这里iCatch使用的是Cygwin工具,下面这两张图中的内容能看懂吗? (图一) (图二) 反正我一开始是没有看懂,虽然能翻译成中文, 但是不理解啊!开始只理解成第一张图说的是cygwin-2.5.2-1和cygwin-1.7.18是一种gcc工具,一个是在Win8及以上版本的电脑上使用,一个是在Win7及以下的版本使用;第二张图说的是去哪里下载Cygwin的安装包,这里自动忽略了第3点。 那就去下载Cygwin吧,下完开始安装,在网上搜到相关怎么安装Cygwin,上面说是如下图这步时要选择perl 和 Devel 然后再下一步,那就照做吧。 (图三) 下一步,下一步,直到完成。然后打开Cygwin开始进入到SDK主目录下开始编译。输入./config.sh wdv4k37命令试下,(这个命令是使用的SDK规定就是要这么输入才能编译的,所以不用问为什么?嘿嘿!),命令输入后出现了如下错误: 好吧!遇到问题首先要问网络,然后从网上找到了处理‘\r‘错误的解决方式,就是对config.sh这个文件进行设置,用命令如下: sed -i ‘s/\r//’ config.sh 后面只出现‘\r‘错误就将前面的.sh文件进行sed命令一下,直到所有’\r’错误没有为止。 继续./config.sh wdv4k37后出现下面信息: 我也不知道这个对不对,没错误出现那就当它是对的吧,继续往下执行make V37CT=V39M命令,然后一点信息都没出来,查看SDK里面也没有生成可执行文件,这个肯定是有问题的。按原厂给的编译说明也没有作用。这会不会是Cygwin没有装好的原因呢? 再去回顾下安装频骤,这里就意识到前面第2张图中的第3点的问题,就是在安装到Select Packages这步时需要添加“diffutils”“make”“patch”“perl”“gawk”这几个包,好吧,那就重新装下Cygwin,将这些都添加上。但时这样重装后再试这make还是没有反应。是不是make或gcc有问题呢? 然后查了它们都是有安装的,也用简单的hello程序验证过是OK的。所以问题出在哪里呢? 到了相关网站去留言咨询,对于小白来说,那些回答太专业了,根本就不知道怎么去做,我所想要的就是带实例的那种解答也许能帮上忙。 现在用的是WIN7系统,安装的是Cygwin-3.4.10, 是不是这系统有问题呢? 那么就换台WIN10的电脑试下吧,WIN10电脑安装的是Cygwin-3.5.3-1, 换过去后,同样的SDK,在WIN10使用make时是有反应的,虽然有错误担示(如下图), 但总归是有反应的不是,为什么WIN7上的就用不了呢? 发现WIN10上在执行./config.sh wdv4k37命令后会多出两行信息,如下图: 所以说在这个命令下就会有make的动作,那是不是还是说明这个make有问题呢?同样的makefile文件,同样的执行方式,为什么在WIN10上就可以呢? 到底少了哪些依赖呢? 真令人头疼啊! 后面在WIN7上反复重装Cygwin添加新的包,测试make时都是没有反应的。问题出在哪呢? 这时候厚脸皮要起作用了,哈哈!还是得去请教同事了,这里也非常感谢同事的帮助!去看了下同事是怎么编译的,发现他是打开的命令窗口是windows
这个类型的,而不是Cygwin
这个类型的,问他是怎么回事? 然后同事就说这快捷键是在哪里,原来是在电脑的C:\cygwin-2.5.2-1这个目录下的Cygwin.bat文件,他是用这个打开来编译的,后来我又去查环境安装说明,这时回到最前面的第1张图中,才知道图中提的添加Cygwin.bat这个的作用。 我先在WIN10电脑上试,发现同样的SDK,用C:\cygwin-2.5.2-1这个目录下的Cygwin.bat打开来编译,结果make后也没有错误产生了,那个‘Error 127‘的错误直接消失了。然后我在WIN7电脑上看,这时./config.sh命令也正常了,make命令也有作用了,但出现了下面的错误: 我错误信息,我也不懂与哪里有关,那该怎么办啊? 试到这里的时候我总算后知后觉的知道了一件事,是什么事呢? 那就是cygwin-2.5.2-1不是gcc工具,它就是一个Cygwin的软件,2.5.2-1就是版本号,同时也知道文章前面(图一)中所说的预安装包的意思--就是不用安装就可以用的。(我是不是够笨的呢!嘿嘿!) 这里有个问题,就是我觉得Cygwin.bat这个窗口不好用,反正常就是这样觉得,那我怎么才能用cygwin的命令窗口呢? 在预安装包里我没有找到。后面我是这样实现的: 1. 先是安装另一版本的Cygwin;注意“diffutils”“make”“patch”“perl”“gawk”这5个包必须要添加上。将其装入到系统C盘下,目录为C:\cygwin64 。安装时将快捷键添加到WINDOWS的“开始”中,如下图: 2. 安装好后,再将C:\cygwin-2.5.2-1所有文件都拷C:\cygwin64这个目录下,移动不了没有权限的就跳过,复制完后,从“开始”里面打开Cygwin64 Terminal这个快捷键就进入到Cygwin命令窗口了,这时再来试./config.sh和make,效果是和Cygwin.bat这个命令窗口一样的。为什么能这样? 作为初学者而言,这些问题就不必去深究了,能用就行。 关于make后出现的‘[hal]’和‘-u’错误,我换了一个编译没错误的SDK来试,两台电脑都是可以编译成功的。就开始试的那个SDK会出现这个错误,所以可以判定的时这个错误是和SDK有关。正确make后的结果信息如下: *** _WDV4K37/download/WDV4K.bin is built successfully! *** *** FRM is built successfully! *** Building v37 : WDV4K HW_WDV4K_V37 done 在看不懂错误信息的情况下该怎么办呢? 那就只能试错了,就是将好的SDK中的文件一点一点的拷贝覆盖到有问题的SDK中,直到错误信息消失为止,先拷多点,等问题解决时的那个点,然后再将范围缩小,这里定位到了SDK第一级目录下的V37目录中的lib文件夹有问题,更换这个后‘[hal]’和‘-u’错误没有了,然后出现了一个新的错误,如下: 这里就是编译时生成的_WDV4K37这个文件夹出问题了,可以直接将这个文件夹删掉,也可以在_WDV4K37\_v37\customization\hostfw这个目录下将libhostfw.a这个文件替换成能编译通过的SDK中的这个文件。删除或替换后问题解决。 到了这里,软件的编译工作就完成了,编译没问题了,那后面就可以尝试着去修改代码实现想要的功能了。 对于有些问题还是等以后慢慢去弄明白,对于初学者而言目前的状态就是能用和知道问题点就行,没必要去深究为什么,先用基础做起。 谢谢观阅!
|
学习过程磕磕绊绊,但是作者有不怕困难和持之以恒的动力,以较少的外部助力之下,完成iCatch方案的软件编译环境配置。二姨给你加油,相信你可以越来越棒,成为大牛。