Chinaunix首页 | 论坛 | 博客
  • 博客访问: 555450
  • 博文数量: 105
  • 博客积分: 3274
  • 博客等级: 中校
  • 技术积分: 1161
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 12:14
文章分类

全部博文(105)

文章存档

2011年(1)

2010年(104)

分类: LINUX

2010-03-26 21:51:57

如果这个x-loader(一级引导程序)和u-boot(二级引导程序)都弄好了,剩下的内核和文件系统的导入就很easy了。
开发阶段一般都使用tftp的方式来载入内核和根文件系统。
自带的系统使用的是ubi文件系统,那么就先了解下ubi文件系统吧。
编译环境:fedora 10
1,按照链接,下了zlib-1.2.3.tar.gz,lzo-2.03.tar.gz,mtd-utils_20080508.orig.tar.gz
   注释:zlib是一种压缩算法,目标机也就是开发板使用MTD工具的时候,需要zlib库的支持。
        lzo是致力于解压速度的一种数据压缩算法,LZO 是 Lempel-Ziv-Oberhumer 的缩写。
2,编译安装zlib
               tar xzvf zlib-1.2.3.tar.gz
               cd zlib-1.2.3
               make
               make install
3,编译安装lzo
               tar xzvf lzo-2.03.tar.gz
               cd lzo-2.03
然后
  make
 出现了问题,提示没有配置文件。于是查看INSTALL文件,vi ./INSTALL
有下面几行
Quick start
---------------
./configure
make
make check
make test     (run a full test)
make install  (when logged in as root)
于是先使用
./configure
然后 make
     make check     (会提示 All checks passed)
     make test      (会提示 All tests passed.Now you are ready to install LZO)
     make install
make check与make test不使用也可以。
4,编译mtd-utils
               tar xzvf mtd-utils_20080508.orig.tar.gz
               cd mtd-utils-20080508
               make
会提示
==============
recv_image.c: In function 'main':
recv_image.c:129: error: storage size of 'rq' isn't known
recv_image.c:129: warning: unused variable 'rq'
recv_image.c:311: warning: format '%08lx' expects type 'long unsigned int', but argument 2 has type 'uint32_t'
recv_image.c:311: warning: format '%08lx' expects type 'long unsigned int', but argument 3 has type 'uint32_t'
recv_image.c:311: warning: format '%08lx' expects type 'long unsigned int', but argument 4 has type 'uint32_t'
make[1]: *** [recv_image.o] Error 1
==============
这是一个BUG,可以根据下面修改
diff --git a/recv_image.c b/recv_image.c
index 3b79304..d65aa2a 100644 (file)
--- a/recv_image.c
+++ b/recv_image.c
@@ -1,14 +1,14 @@
 
 #define _XOPEN_SOURCE 500
-#define _USE_MISC
 
-#include     
-#include     
-#include     
-#include     
-#include    
+#include
+#include
+#include
+#define __USE_GNU
+#include
+#include
 #include
-#include    
+#include
 #include
 #include
 #include
@@ -307,7 +307,7 @@ int main(int argc, char **argv)
                                                ~(meminfo.erasesize - 1);
                                        erase.length = meminfo.erasesize;
 
-                                       printf("Will erase at %08lx len %08lx (bad write was at %08lx)\n",
+                                       printf("Will erase at %08x len %08x (bad write was at %08x)\n",
                                               erase.start, erase.length, eraseblocks[block_nr].flash_offset);
                                        if (ioctl(flfd, MEMERASE, &erase)) {
                                                perror("MEMERASE");
MTD userspace toolsRSS Atom
然后重新make,成功,然后会在文件夹 ./ubi-utils/new-utils下面生成我们需要的ubiattach、ubimkvol等文件。
 
等到这时,我才发现我没有交叉编译,编译成功了也没有任何意义。在此记下来,重要的是过程。
阅读(1746) | 评论(0) | 转发(0) |
0

上一篇:随笔

下一篇:linux基础(1)

给主人留下些什么吧!~~