给小米路由器上面的python添加扩展库
来源:互联网 发布:人工智能的发展趋势是 编辑:程序博客网 时间:2024/06/10 08:47
上次编译python移植的到小米路由器上,http://blog.csdn.net/ftsun123/article/details/24925671,想把goagent 移植到python上面,发现没有openssl支持,调用urllib打开https的网站会有问题,所以我这边添加了对openssl的支持,添加步骤如下。
首先下载openssl的sourcecode http://www.openssl.org/source/
解压后编译,编译环境可以参考编译python的那篇文章,然后执行下面的命令
CC=arm-openwrt-linux-gcc CXX=arm-openwrt-linux-g++ AR=arm-openwrt-linux-ar RANLIB=arm-openwrt- linux-ranlib ./Configure no-asm shared --prefix=`pwd`/../out/openssl linux-armv4 2 make 3 make install
就可以在上级目录的out/openssl 下面生成arm上面需要的openssl库了。
然后修改python的 setup.py文件(记得要先按编译python那篇文章打补丁),在453行添加下面的code。
# The common install prefix of 3rd party libraries used during 453 # cross compilation 454 mydir = os.environ.get('PYTHON_XCOMPILE_DEPENDENCIES_PREFIX') 455 if mydir: 456 inc_dirs += [mydir + '/include' ] 457 inc_dirs += [mydir + '/lib/libffi-3.0.10/include'] 458 lib_dirs += [mydir + '/lib' ] 459 #inc_dirs += [os.getcwd() +'/third/out/zlib/include'] 460 inc_dirs += [os.getcwd() + '/third/out/openssl/include'] 461 #lib_dirs += [os.getcwd() + '/third/out/zlib/lib/'] 462 lib_dirs += [os.getcwd() + '/third/out/openssl/lib/']
重新make 可以发现python 已经不会提示没有_ssl支持了。
安装goagent 还需要安装pyOpenSSL, 这个我是通过easy install 安装,不过依赖的一些库由于包含c文件需要自己手动编译成egg包或lib库安装上去,直接去网上搜一下这些lib,下载下来sourcecode就可以了。
安装pyOpenSSL依赖的需要手动编译的库如下。
cryptography-0.4->cffi-0.8.2->libffi-3.1
首先编译libffi,编译环境还是openwrt
CC=arm-openwrt-linux-gcc CXX=arm-openwrt-linux-g++ AR=arm-openwrt-linux-ar RANLIB=arm-openwrt-linux-ranlib ./configure --host=./configure --host=arm-linux --prefix=`pwd`/../out/libffimakemake install。
编译ciffi-0.8.2
export PLAT=arm-openwrt-linux-export PY=~/python-arm #python 的编译目录,所有的扩展包我都是放到这个目录下的third目录export CC="${PLAT}gcc -pthread"export LDSHARED="${CC} -shared"export PYPREFIX=${PY}_install/ # python 编译出来的结果export CFLAGS="-I${PY}/third/out/libffi/include -I${PYPREFIX}include/python2.7"export LDFLAGS="-L${PY}third/out/libffi/lib"python setup.py bdist_egg
如果没有错误会在dist目录下生成cffi-0.8.2-py2.7-linux-x86_64.egg 文件,重命名文件cffi-0.8.2.egg 不然安装会有问题。
编译cryptography, 这里需要依赖前面编译出来的openssl lib
export PLAT=arm-openwrt-linux-export PY=<span style="font-family: Arial, Helvetica, sans-serif;">~/python-arm #python 的编译目录,所有的扩展包我都是放到这个目录下的third目录</span>export CC="${PLAT}gcc -pthread"export LDSHARED="${CC} -shared"export PYPREFIX=“${PY}_install/"export CFLAGS="-I${PY}third/out/openssl/include -I${PYPREFIX}include/python2.7"export LDFLAGS="-L${PY}third/out/openssl/lib"<pre name="code" class="plain">python setup.py bdist_egg编译出来egg同样需要重命名为cryptography-0.4。
这样基本需要的egg&lib就编译Ok了,接下来需要安装到路由器上面。
首先安装lib
编辑/etc/profile文件,添加下面的语句
export LD_LIBRARY_PATH=/userdisk/libs/
把编译的openssl,和libcffi都拷贝到这个目录。
安装easy_install 文件
wget http://peak.telecommunity.com/dist/ez_setup.pypython ez_setup.py
把刚才编译好的cffi和cryptography都拷贝到路由器上面,运行命令
easy_install cffi-0.8.2.eggease_install cryptography-0.4.eggease_install pyOpenSSL
如果没有问题就安装好了pyOpenSSL库了,这样就可以安装goagent 了,安装方法很多,大家可以自己在网上找。
本来还编译了gevent库,想让goagent 工作的更稳定但是goagent会有Segment fault 错误,测试了一下goagent 被伟大的防火墙也弄的半残了,也就懒得折腾了。知道如何编译python 扩展库就OK了。
后记:
如果有时间看看能不能让路由器识别arduino mega,我这里有块板子,但是插上识别不出来,看来一下好像是没有usb串口驱动没有,有空看看能不能编译一个ipk装上去。
- 给小米路由器上面的python添加扩展库
- 交叉编译 小米路由器mini 的 python
- 小米路由器添加自启程序
- 移植python到小米路由器记录。
- 支持VPN的路由器,小米路由器PPTP的设置,
- 交叉编译 小米路由器mini 的 pyOpenSSL
- 小米路由器:路由器的外皮下到底是什么?
- 给小米公司的建议
- linux 给php添加扩展
- 给mBlock添加扩展模块
- 给运行的Python程序添加参数
- 给自己的Joomla!组件扩展添加参数 【转】
- C# 给系统提供的 Class 添加扩展方法
- 给UIImage添加生成圆角图片的扩展API:
- Category 类扩展,就是给原有类的添加方法。
- 如何扩展或者添加硬盘给VMware的Linux操作系统
- python中如何给散点图上面的特定点做标记
- python自带的PIL库扩展图片大小给图片加上文字描述
- 申请ios开发者账号
- js的匿名函数
- B-树
- 元数据的定义及其与MOF、模型关系
- 读stdlib.h 库qsort源码 ,对上篇文章(回调函数)排序进行修改:
- 给小米路由器上面的python添加扩展库
- xml 格式化输出
- Java 的多线程
- Handler 与 AsyncTask
- 顶部固定div
- 电脑突发故障应急处理方法
- mysqldump Tips
- Qt和MFC比较
- To the Max - POJ 1050 dp