本博客倡导开放源代码,在此公布之程序源代码如无特别声明均采用GNU通用公共 许可证(GPL)

乐在其中

分享学习Linux的乐趣

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  23 随笔 :: 0 文章 :: 401 评论 :: 0 Trackbacks
MP800H官方固件中使用的uClibc版本为0.9.28,也是相当老的版本(2005年发布的)。但是由于现有的工具链都是基于这个版本的,到目前为止,升级到新版本的尝试还不成功的。(这不是目前最紧迫的任务,我会晚点再研究)

既然不升级,为什么还要重新编译呢?因为官方编译的版本没有打开完整RPC支持(配置文件中:UCLIBC_HAS_FULL_RPC=y),没有它NFS服务器不能工作。

还是用华硕公布的源码。华硕在uClibc-0.9.28官方源码基础上做了一些修改(我把它整理成针对官方版的补丁:uClibc-0.9.28-asus.patch.zip
工具链就用华硕源码包里提供的sdelinux-5.03.06-1

配置uClibc:进入uClibc-0.9.28源码目录,执行make menuconfig进行交互是配置。(我用的配置:config-uclibc-0.9.28.zip,可直接将此配置文件解压后改名为.config放入uClibc源码目录,然后再执行make menuconfig在此基础上进行修改)。

配置时有一点需要注意:有一项配置叫做"Linux kernel header location",需要填入Linux内核头文件的路径,这个必需与播放机上运行的内核版本一致。这里我还是用华硕的Linux内核源码。源码包里有个文件叫linux-2.6.12.274877.tgz,将它解开 tar zxf linux-2.6.12.274877.tgz,得到linux-2.6.12目录,将"Linux kernel header location"指向这个目录。


配置完成后执行make进行编译,然后安装到指定目录以便于打包,这里以/home/user/dist/uclibc为例
1 make PREFIX=/home/user/dist/uclibc install

到这里,我们已经有了自己编译的uClibc和BusyBox,下一步就是要测试一下它们是否能正常工作。我将在下一篇博文中介绍。
posted on 2010-03-18 15:16 gouzhuang 阅读(5961) 评论(4)  编辑 收藏 引用 所属分类: 嵌入式Linux

评论

# re: 重新编译uClibc 2010-03-18 16:06 ccc
继续关注中  回复  更多评论
  

# re: 重新编译uClibc 2010-10-06 14:25 hibaby
重新编译uClibc的时候,如果开启locale选项,编译就无法通过,看介绍locale功能还在开发中,不知道有什么好办法进行中文化的支持?  回复  更多评论
  

# re: 重新编译uClibc 2010-10-06 15:51 gouzhuang
@hibaby
我没有试过打开locale,uclibc 0.9.28版对locale的支持可能还不完整,能否工作不好说。以后有时间我准备尝试升级到新版本的uclibc。对于中文文件名的处理,目前我是通过nfs或samba共享在PC上进行文件操作,只要两端都使用相同字符编码(我要utf8)就没有问题。  回复  更多评论
  

# re: 重新编译uClibc 2011-08-29 16:29 wesley
hi,
我现在使用 linux 2.6.19 和 uclibc 0.9.28 在进行嵌入式开发,
但是遇到一个系统crash 的问题,打算更新 uclibc 0.9.28 到 uclibc 0.9.30 试一试,
下载uclibc 0.9.30以后放入 与 原工程uclibc 0.9.28同级目录,但是编译有错误。缺少头文件等,请问是否还需要做其他配置?  回复  更多评论
  

只有注册用户登录后才能发表评论。