python交叉编译:
平台:ubuntu 15.10,root用户登录,交叉编译器arm-none-linux-gnueabi,宿主机:ubuntu,目标机:arm。
1、下载python
下载官网地址:https://www.python.org
2、python准备两份,一份为宿主机编译,一份为目标机编译,分别放在/root/x86和/root/arm下。
3、编译宿主机python
(a)./configure
(b)make
2、配置:
CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ ./configure --host=arm-linux --prefix=/usr/local/arm/python ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ap_void_ptr_lt_long=no ap_cv_void_ptr_lt_long=no LDFLAGS=-lpthread -disable-shared --build=arm READELF=arm-none-linux-gnueabi-readelf --disable-ipv6 ac_cv_file__dev_ptmx=0 ac_cv_file__dev_ptc=0
其中的/usr/local/arm为本人的arm交叉编译安装目录。
3、make及make过程的问题
(a)pgen的替换
在宿主机的源码目录中找到pgen,将该文件拷贝到目标机相同文件夹下,改名字pgen_pc,在python根目录中的makefile文件中找到PGEN= Parser/pgen$(EXE),大约位置292行,下面添加一行PGEN_PC= Parser/pgen_pc$(EXE),搜索$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C),大约位置797行,改为$(PGEN_PC) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)。
(b)_freeze_importlib替换:
在宿主机的源码目录中找到_freeze_importlib,将该文件拷贝到目标机相同文件夹下,改名字_freeze_importlib_pc,在python根目录中的makefile文件中找到./Programs/_freeze_importlib \,大约位置730行,修改为./Programs/_freeze_importlib_pc \,注意pc后面有个空格。
4、make
执行步骤3之后,编译应该没有错误。
5、make install
本人python的安装目录为: /usr/local/arm/python
至此,可以使用交叉编译过的python了。
下面应该是libxml的交叉编译了,虽然,网上大把的资料,但是我还是决定写下自己的编译笔记。