openwrt系统移植Python

1、在openwrt系统上使用opkg的方式安装Python有关的库时,又时会遇到麻烦,还需要注意安装顺序;所以打算编译一个能直接在openwrt上跑的Python;

Python源码下载:可以直接去官网下载https://www.python.org/downloads/,这里使用的Python2.7.7版本

交叉编译工具:直接使用openwrt工程下的交叉编译工具链,如果没有最好能编译一下openwrt,对于开发来说是必须的;这里使用的是64位Intel的cpu,那么交叉编译工具链选择:x86_64-openwrt-linux-xxx;不同平台使用不同工具链;

编译环境:Ubuntu16.04(使用的较新Ubuntu,在16.04上搭建openwrt编译环境时会有点麻烦,推荐使用Ubuntu14.04版本)

2、编译过程

在Ubuntu下解压Python源码

tar xf Python-2.7.7.tar.xz .

进入解压后的目录

cd Python-2.7.7

进行一些必要的配置,这里可以配置CC、CFLAGS、LDFLAGS,但是此处选择默认即可

./configure

编译Python需要使用python语法解释器

make python

Parser/pgen

mv python dstpython

mv Parser/pgen Parser/dstpgen

make distclean

添加环境变量,编译的时候会去寻找这个路径下的编译工具链,

export PATH=$PAHT:~/software/staging_dir/toolchain-x86_64_gcc-5.5.0_glibc/x86_64-openwrt-linux/bin/

export STAGE_DIR=~/openwrt/staging_dir/

./configure

make HOSTPYTHON=./dstpython HOSTPGEN=./Parser/dstpgen BLDSHARED="x86_64-openwrt-linux-gcc -shared" CROSS_COMPILE=x86_64-openwrt-linux- CROSS_COMPILE_TARGET=yes     HOSTARCH=x86_64-linux BUILDARCH=x86_64-linux-gnu

(ps:注意使用需要编译的目标机平台的工具链,此处是x86_64,其他的有arm、mips等等)

编译最后会提示

openwrt系统移植Python_第1张图片

关于这些模块需要去安装一些库,具体的可参考一下https://www.linuxidc.com/Linux/2016-06/132691.htm

实际上程序也是可以使用的,只是可能在使用这些模块的地方会有错误;

3、移植Python

在Python-2.7.7目录下会有python这个可执行文件,将python和Python-2.7.7目录下的Lib目录打包到目标机上,一般放在/usr目录下;

目标机上新建/usr/python2.7目录

将Lib以及python都放进去;由于目标机的环境变量PATH并没有包含/usr/python2.7,需要添加一下

export PYTHONHOME=/usr/python2.7
export PYTHONPATH=.:$PYTHONHOME:$PYTHONHOME/site-packages
export PATH=$PATH:$PYTHONHOME:$PYTHONPATH

其中PYTHONHOME和PYTHONPATH是执行python需要的环境

最后运行python……

如果提示会找不到某些模块,这里遇到过找不到_sysconfigdata、site、select等等,

可以先在python的编译目录下寻找,其中select是以select.so存在,其实在编译目录的 build/lib.linux-xxx-2.7/下会有,只是PATH没有添加上这个环境变量导致没有找到,那么解决方法就是将build/lib.linux-xxx-2.7/*.so都拷贝到/usr/python2.7目录下;

其他的模块都是类似的解决方法,就不再详述。

参考:https://www.jianshu.com/p/f77554a9da76

 

 

你可能感兴趣的:(各种库安装)