实战交叉编译——Ubuntu下交叉编译MiniDLNA到DD-WRT

技术交流请联系企鹅252726O5O

先介绍一下我的软硬件环境:

编译环境:Win7 64bit -> VMWare Player -> Ubuntu14.04 64bit

目标环境:Netgear WNDR3700v3 + DD-WRT Kong's MOD 12200 + 移动硬盘

MiniDLNA (http://sourceforge.net/projects/minidlna/files/) 是现在家用NAS里最主流的开源DLNA Server软件之一,且至今仍然在活跃更新中。笔者的应用环境下,使用带USB接口的WNDR3700结合硬盘充当一个低端的NAS。
由于现成的固件版本,在miniDLNA v1.1.0之后都没有持续同步升级。因此索性贡献出好几个中午从头搞定了整个交叉编译。

作为其它开源项目的交叉编译来说,整个过程应该是通用的。


第一步,首先要搞到合适的ToolChain,也就是交叉编译器

通俗点说,在PC上用普通的gcc只能编译出PC上跑的程序,想编译出mips cpu能跑得程序,就得用相应的toolchain里面的gcc

所幸的是我们并不需要自己开发工具链,dd-wrt官方提供的最新版本工具链在这里

http://www.dd-wrt.com/site/support/other-downloads

只有一个压缩包,略坑,各种目标环境的工具链(ARM, MIPS等)都以一个单独的文件夹放置在里面,解压后高达30多G。

WNDR3700v3的CPU是基于MIPS处理器的BCM4718A,借鉴前人经验,我最后选择的是toolchain-mipsel_gcc-linaro_uClibc-0.9.32

这里要注意的是,DD-WRT提供的这个大包,所有的toolchain都是64bit版本的,也就是说你的编译环境,必须是一个64bit的linux


第二步,要理清楚所有编译 miniDLNA所需要的依赖库

在minidlna的README文档中,依赖的库包括:

libexif, libjpeg, libid3tag, libFLAC, libvorbis, libsqlite3, libavformat (the ffmpeg libraries)

而这些库的编译本身又依赖于其它几个库,比如zlib等,因此在编译miniDLNA前,实际所需要编译的所有库包括:

zlib, libuuid, libexif, libjpeg, libid3tag, libogg, libFLAC, libvorbis, libsqlite3, ffmpeg

这些库需要按合适的顺序,一个个下载编译好。

注意,由于目标环境是一个mips的cpu和一个封闭的dd-wrt系统,不能把事情搞得太复杂。因此所有的库都一定是静态编译的。


交叉编译的两个步骤,一是在系统环境变量中添加toolchain所在的路径,对于笔者来说:

export PATH=$PATH:"/hom

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值