一、一次尝试
参照这个重新搭建开发环境0,到安装kernal ,终端输入make all
发现 cannot find the yaffs2utils-0.2.9.tar.gz source file,参照1
1)按照read me文件下载文件yaffs2utils-0.2.9.tar.gz,放入osdrv/tools/pc/mkyaffs2image/下,编译,
cd tools/pc/mkyaffs2image/tar -xzf yaffs2utils-0.2.9.tar.gz
cd yaff2utils-0.2.9
patch -p1 < ../hi_yaffs2utils.patch
cd ../
make
2)下载gdb-7.9.1.tar.gz,ncurses-6.0.tar.gz,放入osdrv/tools/board/gdb/ ,编译db-7.9.1.tar.gz;
3)util-linux-2.31.tar.gz,osdrv/tools/pc/cramfs_tool/;
然后,在SDK目录下,make all,发现
“mkimage” command not found - U-Boot images will not be built
make[2]: *** [arch/arm/boot/uImage] Error 1
make[1]: *** [uImage] Error 2
cp: cannot stat ‘arch/arm/boot/uImage’: No such file or directory
MakeFile:296:recipe for target ‘hikernel’ failed
make[1]: *** [hikernel] Error 1
按照文章2尝试,下载mkimage工具
sudo apt-get install u-boot-tools
等待看看否出现新问题。喝口水,活动一下!
回来看一下,确实没有惊喜。
二次尝试
继续找问题。
编译提示
configure :WARNING:cannot find uuid library required for mkfs.ubifs
configure :mtdutils can optionally be built without mkfs.ubifs
Makefile:45:recipe for target '此处省略/osdrv/tools/pc/jffs2_tool/tmp/sbin//mkfs.jffs2’failed
make[1]😗[ 此处省略/osdrv/tools/pc/jffs2_tool/tmp/sbin//mkfs.jffs2]Error 1
make[1]:leaving directory [ 此处省略/osdrv/tools/pc/jffs2_tool]Error 1
Makefile:342:recipe for target ‘hipctools’ failed
make:[hipctools]Error 2
网上查了一下应该是缺少依赖
sudo apt-get install libuuid1:i386
参照3,尝试sudo apt-get install zlib1g-dev,但已经是最新版,所以进行/osdrv/tools/pc/mkyaffs2image/mkyaffs2image# make clean
;
然后退出,在osdrv文件夹下面,make all 重新尝试一下
等待结果
三次尝试
解决了一个问题,
Makefile:45:recipe for target '此处省略/osdrv/tools/pc/jffs2_tool/tmp/sbin//mkfs.jffs2’failed
make[1]😗[ 此处省略/osdrv/tools/pc/jffs2_tool/tmp/sbin//mkfs.jffs2]Error 1
make[1]:leaving directory [ 此处省略/osdrv/tools/pc/jffs2_tool]Error 1
Makefile:342:recipe for target ‘hipctools’ failed
make:[hipctools]Error 2
可能是zlib.h这个问题,但已经是最新版本了,那么问题在哪儿呢?
认真查找了一下,认为是版本问题mtd-utils-2.0.2-tar.bz2;
更换成1.5.2版本;
http://ftp.sjtu.edu.cn/ubuntu/pool/universe/m/mtd-utils/
下载mtd-utils_1.5.2.orig.tar.bz2,先解压缩,再重新压缩为 tar -zcvf mtd-utils_1.5.2.tar.bz2 mtd-utils_1.5.2.orig.tar.bz2
将mtd-utils-1.5.2.tar.bz2放入…/osdrv/tools/pc/jffs2_tool,并修改Makefile中指定的版本号,在osdrv目录下输入make OSDRV_CROSS=arm-hisiv300-linux all再次编译,此处参照文章5,继续尝试编译
发现没有mtd-utils-1.5.2.tar.*文件,查找发现osdrv/tools/pc/jffs2_tool的文件压缩时写成了mtd-utils_1.5.2.tar.bz2 ,修改一下名字mtd-utils-1.5.2.tar.bz2 ,重新编译
出现新问题 cd /bin/sh:line1:./configure :nosuch file or directory;
解决途径:
1)解压进入mtd-utils-1.5.2 中,进行make,发现,缺少sys/acl.h,
2)进一步查找,发现缺少依赖库,安装sudo apt-get install uuid-dev libacl1-dev liblzo2-dev
3)重新编译,发现正常,并可以生成mkfs.jff文件;
4)然后进行 make clean ;make dist clean;
5)退出到osdrv文件夹下面,重新make all;
依然有问题
问题:cd /bin/sh:line1:./configure :nosuch file or directory;
重新为sh 指定 bash 的软链接即可;
执行命令:
sudo dpkg-reconfigure dash
使用dpkg-reconfigure对sh重新配置即可。
并不好使;
思考:问题发生在…/osdrv/tools/pc/jffs2_tool 的Makefile;重新思考,这个Makefile出问题,那么是不是原来2.0.2在添加依赖之后就可以了呢;尝试将Makefile恢复mtd-utils-2.0.2,编译一下,通过了;
osdrv重新编译,发现这个问题过去了;
出现新问题 udevd failed
这是因为缺少gperf
sudo apt-get install gperf;
重新编译;
趁这个时间,看一下
gperf是什么东西。
GNU gperf是完美哈希函数生成器。对于一个给定的字符串集,它会生成哈希函数和哈希表。以c或cpp代码的形式,通过输入的字符串来实现查询操作。产生的哈希函数是完美的,意味着哈希表没有冲突,并且查询操作仅仅需要一次比较操作
反思环境搭建步骤
应该先参照这篇6
,先安装 sudo apt-get install gperf
;
然后安装依赖库
sudo apt-get install make libc6 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev
ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive gawk curl upx pngquant
看起来应该没太大区别
新问题 gdb-7.9.1/missing :line81:bison command not found
makeinfo&bison: command not found解决方法
sudo apt-get install texinfo -y
#####unable locate package
TEXINFO是GNU工程的官方文档格式。理查德·斯托曼和Bob Chassell是它的作者,它主要目的是提供一种能够方便地排版软件手册。
sudo apt-get install bison
GNU bison 是属于 GNU 项目的一个语法分析器生成器。Bison 把一个关于“向前查看 从左到右 最右”(LALR) 上下文无关文法的描述转化成可以分析该文法的 C 或 C++ 程序。它也可以为二义文法生成 “通用的 从左到右 最右” (GLR)语法分析器。
Bison 基本上与 Yacc 兼容,并且在 Yacc 之上进行了改进。它经常和 Flex (一个自动的词法分析器生成器)一起使用。
此软件的源代码是可自由获得的,在 GPL 下发布。