交叉编译 小米路由器mini 的 python

看了很多文章,要么说的是用opkg安装python,要么说的是小米路由器的交叉编译,就是没有mini的。学习了这篇文章(http://me.deepgully.com/post/5638916786880512),编译了小米路由mini的python。

已编译好的:http://download.csdn.net/detail/kowity/9611919


小米路由mini版的路由是mips的,跟小米路由的arm版不一样,所以脚本做了一些修改。先下载小米路由器mini版的开发包,里面有编译工具链:http://bigota.miwifi.com/xiaoqiang/sdk/tools/package/sdk_package_r1c.zip。将压缩包里面的 toolchain 复制到 /opt/xiaomi 


先编译依赖库

#!/bin/bash

# rm -r -f /opt/xiaomi
# wget -c http://bigota.miwifi.com/xiaoqiang/sdk/tools/package/sdk_package_r1c.zip
# unzip sdk_package_r1c.zip
# cp -r -f sdk_package_r1c/include/* sdk_package_r1c/toolchain/include/
# cp -r -f sdk_package_r1c/lib/* sdk_package_r1c/toolchain/lib/
# mv -f sdk_package_r1c/toolchain /opt/xiaomi

export XIAOMI_ROOT_PATH=/opt/xiaomi
export PATH="${XIAOMI_ROOT_PATH}/bin:${PATH}"

rm -r -f readline-4.2
wget -c http://ftp.gnu.org/gnu/readline/readline-4.2.tar.gz
tar xvzf readline-4.2.tar.gz
cd readline-4.2
export CC=mipsel-openwrt-linux-uclibc-gcc RANLIB=mipsel-openwrt-linux-uclibc-ranlib AR=mipsel-openwrt-linux-uclibc-ar
./configure --host=mipsel-openwrt-linux-uclibc --build=mipsel-linux --prefix=${XIAOMI_ROOT_PATH}
make
sudo make install
mipsel-openwrt-linux-uclibc-ranlib ${XIAOMI_ROOT_PATH}/lib/libreadline.a
cd ..

rm -r -f libffi-3.1
wget -c ftp://sourceware.org/pub/libffi/libffi-3.1.tar.gz
tar xvzf libffi-3.1.tar.gz
cd libffi-3.1
./configure --host=mipsel-openwrt-linux-uclibc --build=mipsel-linux --prefix=${XIAOMI_ROOT_PATH}
make
sudo make install
mipsel-openwrt-linux-uclibc-ranlib ${XIAOMI_ROOT_PATH}/lib/libffi.a
cd ..

rm -r -f termcap-1.3.1
wget -c http://www.mirrorservice.org/sites/ftp.gnu.org/gnu/termcap/termcap-1.3.1.tar.gz
tar xvzf termcap-1.3.1.tar.gz
cd termcap-1.3.1
export CC=mipsel-openwrt-linux-uclibc-gcc RANLIB=mipsel-openwrt-linux-uclibc-ranlib AR=mipsel-openwrt-linux-uclibc-ar
./configure --host=mipsel-openwrt-linux-uclibc --build=mipsel-linux --prefix=${XIAOMI_ROOT_PATH}
make
sudo make install
mipsel-openwrt-linux-uclibc-ranlib ${XIAOMI_ROOT_PATH}/lib/libtermcap.a
cd ..




再编译python

#!/bin/bash

wget -c http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
rm -r -f python
mkdir python
cd python
cp ../Python-2.7.5.tar.bz2 .
tar -jxf Python-2.7.5.tar.bz2

wget -c http://bugs.python.org/file31991/Python-2.7.5-xcompile.patch
cp Python-2.7.5-xcompile.patch Python-2.7.5/

wget -c http://7xrt07.com1.z0.glb.clouddn.com/setup.py.2.5.xcompile.patch
cp setup.py.xcompile.patch Python-2.7.5/

mkdir backup
cd Python-2.7.5
make distclean
rm -rf python_for_build Parser/pgen_for_build

cp Makefile.pre.in ../backup/
cp Modules/Setup.dist ../backup/Modules/
cp configure ../backup/
cp setup.py ../backup/

unset CC
unset CXX

./configure
make --jobs=2 python Parser/pgen

mv python python_for_build
mv Parser/pgen Parser/pgen_for_build

cp python_for_build ../backup/
cp Parser/pgen_for_build ../backup/


patch -p3 < Python-2.7.5-xcompile.patch
patch < setup.py.xcompile.patch
make distclean

RFS=/opt/xiaomi
export PATH="${RFS}/lib:${RFS}/usr/lib:${PATH}"
export LDFLAGS="-L${RFS}/usr/lib -L${RFS}/lib"

./configure --host=mipsel-openwrt-linux-uclibc --build=mipsel-linux --prefix=/\
    --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes

if [ $? != 0 ]; then
    echo "(E) Configure FAILED!"
    exit 5
fi

make --jobs=2 \
    CFLAGS="-g0 -Os -s -I${RFS}/include -I${RFS}/usr/include -L${RFS}/usr/lib -L${RFS}/lib -fdata-sections -ffunction-sections" \
    LDFLAGS="-L${RFS}/usr/lib -L${RFS}/lib"
    

if [ $? != 0 ]; then
    echo "(E) Make FAILED!"
    exit 5
fi

mipsel-openwrt-linux-strip --strip-unneeded python

echo "(I) Installing Python ..."
sudo make install DESTDIR=${RFS}/python PATH="${PATH}"
if [ $? != 0 ]; then
    echo "(E) Installation FAILED!"
    exit 5
fi

rm -r -f ${RFS}/python/lib/python2.7/test
rm -r -f ${RFS}/python/lib/python2.7/unitest
rm -r -f ${RFS}/python/lib/python2.7/lib-tk
rm -r -f ${RFS}/python/lib/python2.7/idlelib
rm -r -f ${RFS}/python/lib/python2.7/2to3

echo "(I) Python cross-compilation and installation is done!"

exit 0


将生成的python目录复制到小米路由器就ok了

小米路由器mini刷机后可以支持IPv6协议。IPv6是下一代互联网协议,相对于IPv4,它的主要优势是拥有更大的地址空间和更好的安全性。小米路由器mini原生的固件可能没有预装IPv6支持,但可以通过刷机来解决这个问题。 刷机指的是更换或更新路由器的固件,以获取新功能或修复错误。刷机需要小心操作,务必保证操作准确、固件来源可信,以免造成不可逆的损害。在刷机之前,我们需要准备好所需的工具和固件文件。 首先,我们需要下载所需的刷机工具和对应的固件文件。可以在小米官方网站或第三方网站上搜索到适用于小米路由器mini的刷机固件。建议选择官方原版的固件,以确保兼容性和安全性。 然后,将小米路由器mini连接到电脑,并确保电脑和路由器之间的连接正常。打开刷机工具,并按照工具的说明进行操作,选择要刷入的固件文件。 在刷机过程中,需要注意保持稳定的电源供应,避免中途断电。并且刷机过程可能需要一段时间,请耐心等待。 刷机完成后,小米路由器mini将具备支持IPv6的功能。可以进入路由器设置页面,找到相应的配置选项,启用IPv6。这样,路由器就能够正常运行IPv6协议,支持IPv6地址分配和通信。 需要注意的是,刷机可能会使路由器失去官方保修,而且不当的刷机操作可能会导致路由器变砖(即无法正常启动)。因此,在刷机之前务必备份好路由器的设置和数据,确保能够恢复到原始状态。 总之,通过刷机,小米路由器mini可以支持IPv6协议,从而提供更好的互联网连接体验。但请务必小心操作,确保选择可靠的固件和正确的刷机方法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值