Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3551548
  • 博文数量: 1805
  • 博客积分: 135
  • 博客等级: 入伍新兵
  • 技术积分: 3345
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-19 20:01
文章分类

全部博文(1805)

文章存档

2017年(19)

2016年(80)

2015年(341)

2014年(438)

2013年(349)

2012年(332)

2011年(248)

分类:

2012-08-15 13:10:55

最近一直在构建基本系统,基本步骤就是之前遵循CLFS的步骤,不过中间总会出现一些问题,本次出现的问题算是比较难发现点的,这里总结下


1. undefined reference to 'usleep', 这个是编译uClibc的时候配置项没有勾全,UCLIBC_SUSV3_LEGACY没有打开,所以没有编译进去,在编译busybox的时候最后链接阶段就会出错。

2. Freeing init memory: 140K
Kernel panic - not syncing: Attempted to kill init!

注意这里不是说找不到init,而是执行出错,开始怎么都找不到原因,后面google偶尔看到一个跟这个情况不一样的邮件列表,里面有说 arm-none-linux-gnueabi-readelf -A file 可以查看这个文件的二进制架构信息,所以对自己的busybox看了下发现:
[dang@DANG bin]$ armv4l-microha-linux-uclibceabi-readelf -A busybox
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "ARM10TDMI"
  Tag_CPU_arch: v5T
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align8_needed: Yes
  Tag_ABI_enum_size: int
原来架构错了,我的2440是v4架构的,这显然不行,所以想给gcc传递mcpu=arm920t来解决。不过后来发现不行,原来gcc4.5默认只支持v5及其以上版本,后面用-with-cpu=arm9tdmi 重新构建gcc,解决问题。

3. 顺便记下arch linux的 nfs让我吃的亏:
uboot,kernel的nfs用的v1或者v2版本,而arch的默认这两个直接关掉,所以就无法挂载,正如网上所述,问题基本都是nfs配置有问题。

4. 内核的底层架构代码原来现在基本都是platform driver 模型,只要熟悉下模型代码就很好修改。
阅读(654) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~