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