Ubuntu14.04 交叉编译Python2.7.2 for arm
来源:互联网 发布:粤语拼音输入法 mac 编辑:程序博客网 时间:2024/06/08 21:26
这是我第一次写博文,碰巧最近正在学习Python,有个项目需要把Python2.7.2移植到arm-linux平台上,苦苦试了N天都没成功,在yahoo(不知道为什么Google连不上去)上搜了一篇大牛的博文,于是就试着做了一遍,终于成功了,亲测可用,也许其他版本的Python也适用,现把关键步骤翻译一下,与大家分享!
原文地址:点击打开链接
Step1:下载Python
首先,你应该去官网下载你想要使用的Python:http://www.python.org
然后解压:
tar -xvzf Python-2.7.2.tgz
这将会创建一个名为:Python-2.7.2的文件夹,进入这个文件夹。
cd Python-2.7.2
Step2:创建可在PC上运行的脚本解释器
在交叉编译Python时,需要用到pgen解释器,如果编译的是arm架构的解释器,显然是不能在PC上运行的,会导致编译失败,所以要首先编译出一个能在PC上运行的pgen。
依次执行以下代码:
./configuremake python Parser/pgenmv python hostpythonmv Parser/pgen Parser/hostpgenmake distclean
以上代码生成了交叉编译过程中需用到的两个程序:pgen和python,然后把他们分别更名为:hostpgen和hostpython,如果不更名,在交叉编译时会生成同名文件覆盖他们,这样的话之前的工作就白干了!
Step3:给Python安装文件打补丁
下载对应版本的补丁文件,这里以Python2.7.2为例:
wget http://randomsplat.com/wp-content/uploads/2011/10/Python-2.7.2-xcompile.patch其他版本补丁的下载地址:
- Python-2.6.6-xcompile.patch
- Python-2.7.2-xcompile.patch (With ctypes thanks to Jaux (jaux.net)
- Python-2.7.3-xcompile.patch ( Thanks to Lothsahn)
- Python-3.1.1-xcompile.patch
- Python-3.1.2-xcompile.patch
- Python-3.1.3-xcompile.patch
- Python-3.2.2-xcompile.patch
patch -p1 < Python-2.7.2-xcompile.patch
Step4:配置安装文件并编译
分别执行以下代码:其中--prefix选项中的路径是你要存储编译好的文件的路径,CC等选项是你用到的编译器。
CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar RANLIB=arm-linux-ranlib ./configure --host=arm-linux --build=x86_64-linux-gnu --prefix=/home/user/_install
然后执行这个命令,其中的setup.py是负责编译so文件的,我的PC上默认这个文件是不可执行的,但在编译Python时系统需要执行这个文件,所以你要给它加上可执行的条件。
chmod 777 ./setup.py
这条命令中包含了开启设置解释器路径,选择编译器,开启交叉编译模式等选项。
make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-linux-gcc -shared" CROSS_COMPILE=arm-linux- CROSS_COMPILE_TARGET=yes HOSTARCH=arm-linux BUILDARCH=x86_64-linux-gnu
然后开始安装:
make install HOSTPYTHON=./hostpython BLDSHARED="arm-linux-gcc -shared" CROSS_COMPILE=arm-linux- CROSS_COMPILE_TARGET=yes prefix=/home/user/_install这会安装到/home/user/_install
Step5:复制到arm设备上并测试
把/home/user/_install下的文件复制到arm设备上,并吧Python添加到PATH中,然后执行测试:
python lib/python-2.7/test/test___all__.py
然后期待着所有测试都通过吧!
0 0
- Ubuntu14.04 交叉编译Python2.7.2 for arm
- ubuntu14.04交叉编译移植python2.7.3
- ubuntu14.04 交叉编译php5 交叉编译工具arm-linux
- Ubuntu14.04下arm-linux-gcc交叉编译环境搭建
- ubuntu14.04配置arm-linux-gcc4.4.3交叉编译环境
- 交叉编译gstreamer for arm
- 交叉编译gstreamer for arm
- 交叉编译Ruby for ARM
- 交叉编译minicom for ARM
- 交叉编译GCC for arm
- 在ubuntu14.04编译protobuf-c for arm版本
- Ubuntu14.04交叉编译BusyBox
- ubuntu16.04交叉编译Poco1.7.8 for arm
- 交叉编译apache服务器for ARM Linux
- 交叉编译apache服务器for ARM Linux
- 交叉编译apache服务器for ARM Linux
- 交叉编译Linux内核for ARM
- STLport 5.2.1 for ARM 交叉编译
- 局部变量,全局变量,静态局部变量,静态全局变量的异同
- [leetcode] Search for a Range
- linux读取按行读写文本文件
- oracle系统包——dbms_transaction用法
- Dede实现列表“隔行换背景色”的方法
- Ubuntu14.04 交叉编译Python2.7.2 for arm
- java教程分享
- String.IsNullOrEmpty()方法的使用
- IOS NSDateFormatter 和NSDateComponents
- hdu 2046 骨牌铺方格
- [转]如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接 .
- android 异步类 AsyncTask
- wait_event_interruptible() 和 wake_up()的使用 .
- Node.js模块系统