这是我第一次写博文,碰巧最近正在学习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。
依次执行以下代码:
./configure
make python Parser/pgen
mv python hostpython
mv Parser/pgen Parser/hostpgen
make 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
然后期待着所有测试都通过吧!