哎,这几天怎么会这种低级的错误呢,现在想想都觉得无语,浪费大把时间不少,喔
第一个问题:
       先说说情况吧,刚移植了一个uboot-1.2.0,在里面增加uboot启动开机画面,是支持BMP的,JPG看别人做过但是估计做起来有点难度。在Uboot启动后直接使用Go命令:go 30008000,认为内核应该会起来,结果出现:
data abort
pc : [<2ec09044>]    lr : [<30007ef0>]
sp : 33efbbd8  ip : ffffffff  fp : 00000001
r10: 00000000  r9 : 000000c1  r8 : 33efbfdc
r7 : 33efbdf4  r6 : 00000000  r5 : 100000c2  r4 : 30008000
r3 : 33efbfb8  r2 : bfffffd8  r1 : 000000c1  r0 : 33efcc20
Flags: nzcv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...
当时认为这是问题,应该解决掉,呵呵,是不是太傻了哦,当时还在想为什么我:tftp 30008000 zImage;go 3000800 或者cp 40000 30008000 100000;go 30008000就能起来呢?
靠,真是一头猪哦
第二个问题:
         我以前都移植过好的Sqite,用arm-linux-gcc-3.4.1、arm-ucibc-linux-gcc都移植成功过,并且都有步骤说明,这次只不过是按照步骤用armv4l-unknown-linux-gcc重新做一遍,Sqlite版本高一些而已,开始按照Configure做,make & make install成功了,但是编译出来的是GCC版本,不是armv4l-unknown-linux-gcc版本,当时编译这个也就没有删掉,用arm-linux-gcc-3.4.1的Configure编译了一下可以是ARM版本的,所以armv4l-unknown-linux-gcc版本按照修改Makefile方法解决,编译成功,当时就放在那里,过了一天来测试armv4l-unknown-linux-gcc编译出来的是否可以用,写一个Sqlite的测试应用程序,
/opt/host/armv4l/bin/armv4l-unknown-linux-gcc -I /home/zouzheng/example/arm_unknown_sqlite/include -L /home/zouzheng/example/arm_unknown_sqlite/lib -o test test_sqlite.c -lsqlite3 -ldl -lpthread

编译出现下面的错误:
collect2: ld terminated with signal 11 [???], core dumped
/opt/host/armv4l/armv4l-unknown-linux/bin/ld: Dwarf Error: Invalid or unhandled FORM value: 14.
/opt/host/armv4l/armv4l-unknown-linux/bin/ld: Dwarf Error: Invalid or unhandled FORM value: 14.
/opt/host/armv4l/armv4l-unknown-linux/bin/ld: Dwarf Error: Invalid or unhandled FORM value: 14.
还一直在找问题,浪费时间不说,原来我使用库是采用GCC编译出来的,而不是使用armv4l-unknown-linux-gcc版本的,当时armv4l-unknown-linux-gcc版本编译成功后并没有把sqlite3、sqlite3.h、libsqlite3.a拷出来呀,过一天后就误认为arm_unknown_sqlite目录下就是armv4l-unknown-linux-gcc版本的
出现上面的原因是:原来是用宿主机686的gcc编译,而不是用交叉编译器/opt/host/armv4l/bin/armv4l-unknown-linux-gcc。使用的库Libsqlite3.a等编译用的是686的编译器,而不是ARM的。所以在编译应用程序时也要用686的,所以出现上面的问题。

哎,又是一头猪
真是一头愚蠢的猪哦,但是我又不是属猪的呀