1、编译环境
Linux系统版本:Ubuntu 12.04
交叉编译工具:arm-linux-gcc-4.4.3
嵌入式linux内核版本:Linux 3.8.0
2、交叉编译Python-2.7.3
1、下载python-2.7.3源码及补丁(补丁被打包在Python-2.7.3.tar.bz2里):
http://download.csdn.net/detail/sinat_36684217/9884409
2、解压缩包,生成一个名为python-2.7.3的目录
tar jxvf Python-2.7.3.tar.bz2
3、进入Python-2.7.3目录
cd Python-2.7.3/
4、运行配置运行配置文件,生成必要的Makefile等文件
./configure
5、编译PC版 python Parser/pgen
make python Parser/pgen
6、将生成的PC版移动至hostpython
mv python hostpython
7、将生成的PC版解释器移动至Parser/hostpgen
mv Parser/pgen Parser/hostpgen
8、清除不必要的文件
make distclean
9、打补丁Python-2.7.3-xcompile.patch(补丁已放在python-2.7.3目录下了)
patch -p1 < Python-2.7.3-xcompile.patch
10、Python-2.7.3交叉编译,并生成_install文件
echo ac_cv_file__dev_ptmx=no > config.site
echo ac_cv_file__dev_ptc=no >> config.site
export CONFIG_SITE=config.site
./configure CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar RANLIB=arm-linux-ranlib LD=arm-linux-ld NM=arm-linux-nm --host=arm-linux --build=x86_64-linux --disable-ipv6
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
make install HOSTPYTHON=./hostpython BLDSHARED="arm-linux-gcc -shared" CROSS_COMPILE=arm-linux- CROSS_COMPILE_TARGET=yes prefix=$PWD/_install
11、_install目录下,有四个子目录,而在子目录bin下,就有ARM系统可执行Python二进制文件。
3、移植Python-2.7.3到ARM系统
1、将_install目录拷贝到ARM的文件系统中
(以下操作是放于ARM根目录下),随意位置,然后进入_install/bin目录下,运行Python,若能进入Python交互界面,则说明交叉编译的Python2.7正确
cd _install/bin/
./python2.7
2、移植python2.7为ARM的默认python解释器
(注意这也是在ARM上操作)
(1)进入_install/bin目录下,并将所有文件复制到ARM系统下的/usr/bin/下
cp ./* /usr/bin/
(2)进入_install/include目录下,并将所有文件复制到ARM系统下的/usr/include/下
cd _install/include
cp ./* /usr/include/
(3)进入_install/lib目录下,并将所有文件复制到ARM系统下的/usr/lib/下
cd _install/lib
cp ./* /usr/lib/
(4)进入_install/share目录下,并将所有文件复制到ARM系统下的/usr/share/下
cd _install/share
cp ./* /usr/share/
(5)进入/usr/bin/目录下,将默认的python替换为python2.7
cd /usr/bin/
ln -s python2.7 python
(6)测试移植的python2.7,在ARM系统命令行界面下输入python,若能进入python交互界面,并显示是python2.7.3版本,则说明移植完成!
至此已完成Python-2.7.3的交叉编译及移植