Ubuntu编码服务器搭建--续(eCos编译问题)

来源:互联网 发布:手机ui界面设计软件 编辑:程序博客网 时间:2024/05/22 01:29

接上篇,Ubuntu的代码服务器环境搭建OK后,下一套eCos的代码准备编译

下载代码【svn co http://xxxxx –username xxx】,进入到编译目录进行编译【make】,报错
“ecosconfig: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory”
发现没有libstdc++.so.5;
原因时gcc从3.4版本后,不再使用libstdc++.so.5,改用libstdc++.so.6,可通过【gcc -v】查看gcc版本;
随便下载一个libstdc++.so.5,放到“usr/lib/i386-linux-gnu/”目录下即可;

继续编译,又报错“dos2unix: Command not found”,没有dos2unix指令;
这个指令有很多不同版本的,但我们这里需要用到带有-U参数的,需要下载“dos2UNIX hd2u-1.0.0”进行安装;
解压后进入文件夹,执行指令【./config】,报错“configure: error: * libpopt not found ”;
查了一下有说下载“popt-1.14-2rt.x86_64.rpm”,试了一下没作用,可能是因为这个是64位的,而我的ubuntu时32位的;
之后直接安装libpopt【apt install libpopt-dev】,安装时提示好像在占用,重启了下ubuntu后安装成功,再到dos2unix文件夹,执行指令【./config】【make】【make install】,dos2unix安装成功;
参考如下:
http://blog.csdn.net/w616589292/article/details/38274475
这篇是让装“popt-1.14-2rt.x86_64.rpm”的,我按照这个没弄好,可能是环境问题吧,还有一篇才是我用的解决方法,就是找不到了…

继续编译,报错
“error: mcu/mt7628_firmware.h: No such file or directory…”
“error: mcu/mt7628_e2_firmware.h: No such file or directory”
这个就是我上一篇中说的strncmp的实现方式不同,修改文件
【vim ra305x_drivers/Jedi_7628/embedded/tools/bin2h.c】中的
“(strncmp(chipset, “mt7628”, 7)”改为“(strncmp(chipset, “mt7628”, 6)”即可;
我们老大就是觉得这点有风险,让我重新搭环境,这是因为16版本的ubuntu上的strncmp函数已经是比较新的了,没办法只好有用14版本的ubuntu去重搭一遍环境,注意更新网址【apt-get update】不要执行【apt-get upgrade】就行了。

继续编译,报错
“mipsisa32-elf/bin/ld:target.ld:46: syntax error”
这个问题卡了我好久,最后请教我们老大,给了我一个方案,是shell的问题,默认为dash,改为bash即可,【dpkg-reconfigure dash】,选择NO。
Ubuntu的 shell 默认安装的是 dash,而不是 bash。
运行以下命令查看 sh 的详细信息,确认 shell 对应的程序是哪个:【ls -al /bin/sh】
如果是dash,需要改为bash;方法有很多,如果一种不成功就试试其他的,这里列出我查到的4中方法:
1.执行【sudo dpkg-reconfigure dash】然后选择 no 或者 否 ,并确认。最普遍的方法,我刚开始用时不生效,总是没选项出来,后来重装ubuntu后又可以用了;
2.直接修改 /bin/sh 链接文件,将其指定到 /bin/bash:【sudo ln -fs /bin/bash /bin/sh】;
3.在脚本文件中直接指定使用的 shell,而不是指定 sh:
例如使用 #!/bin/bash 或者 #!/bin/dash 而不是#!/bin/sh。但这样将丧失脚本的通用性,使其在不具备所指定脚本的系统下不能被执行。
不建议使用该方法;
4.使用 chsh,在提示后输入/bin/bash 这样就改为bash了

再次编译,OK,无误。

嗯,另外提一点,是系统的时间问题,好像ubuntu装好后默认时间并不会自动获取到匹配的时间,编译时有用到系统时间的地方就显示不对,通过【date】查看当前日期,通过【date -s MM/DD/YY】【date -s hh:mm】修改日期即可

eCos代码是不需要专门安装什么工具链的,我最开始按照MTK的官方文档装了一堆工具链,搞了很久,其实都没有必要的,那些工具链是编译Linux软件才需要的,我们暂时用不到。

后记:服务器我搞好后我们并没有用几天,就又崩了,这次是彻底崩了,好像是其他人动了什么,又好像是因为给虚拟机分配的磁盘控件太大了,我看原本的服务器是分了500G的磁盘,新建的我就也分了500G的,刚开始好好的,后来整个磁盘就全红掉了,虚拟机想关都管不到,我们老大又清理了一次服务器,自己又重新装了一遍才好。

原创粉丝点击