交叉编译适用于Padavan固件的可执行文件

交叉编译

由于不同平台编译出来的文件并不能通用,比如在arm下make命令编译的文件,放到mips上就不能运行。
所谓交叉编译就是在某一平台下编译另一平台的bin文件(可执行文件)。

padavan

俄罗斯大神的杰作,极其稳定,在CN大神经过本地化之后加入了很多的功能(SS、adbyby等)。

这里推荐使用hiboy的固件

准备

提示: 千万别用centos(别问我为什么,我卡在这里很多天之后换成debian才编译成功)。
系统: Debian 7

安装依赖

1
$ apt-get install git autoconf automake bison build-essential flex gawk gettext gperf libtool pkg-config zlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev texinfo python-docutils mc autopoint lrzsz -y

开始交叉编译

下载padavan固件源码

1
2
$ cd ~  
$ git clone https://git.oschina.net/gorden5566/rt-n56u.git

网速快的话一分钟不到就克隆到了/root/rt-n56u/目录

编译交叉工具链

1
2
3
$ cd ~/rt-n56u/toolchain-mipsel
$ ./clean_sources
$ ./build_toolchain

耗时很长时间。
完成之后提示 all is done之后。

配置环境变量

1
$ export PATH=$PATH:/root/rt-n56u/toolchain-mipsel/toolchain-3.4.x/bin: && export STAGING_DIR=/root/rt-n56u/toolchain-mipsel/toolchain-3.4.x/mipsel-linux-uclibc

这里路径toolchain的路径自己修改一下。

编译三步曲(两步)

首先cd到需要编译的源码目录

1
$ ./configure --host=mipsel-linux-uclibc

自动生成makefile

1
$ make

这一步编译出了一个二进制可执行文件,在指定的目录。

PS: 如果没有configure这个文件,那就修改 makefile,改成cc=mipsel-linux-uclibc-gcc,再执行make。

测试

把之前生成的bin文件上传到路由器的/etc/storage目录。

需要注意的是,这个固件与openwrt不同,它的所有可写的目录均是在RAM里面,也就是只要重启,所有修改的内容都会丢失。

所以需要在弄完之后执行

1
$ mtd_storage.sh save

系统会把/etc/storage目录下的内容压缩打包,保存进 内存中的 区块,重启就不消失了。

运行自己的软件

1
$ /etc/storage/helloword

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×