现在的位置: 主页 > 在线留言 > 文章列表

Python交叉编译和移植

作者:程力专用汽车股份有限公司 来源:www.chLiw.com 发布时间:2017-09-05 11:58:32
Python交叉编译和移植

1、交叉编译之前要确定PC上安装对应版本的python

2、下载python http://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2
3、解压 tar xjvf Python-2.7.tar.bz2
4、由于在编译python的时候,需要先编译一个叫pgen的程序出来,用于生成语法解析器,所以要先生成一个pc版本的pgen:
mkdir build.pc
cd build.pc
../configure
make Parser/pgen
然后ls Parser一下,应该就能看到有pgen了。

5、配置:

./configure --prefix=/home/pub/johnny/xbmc/python_install --host=mips-linux-gnu "CC=mips-linux-gnu-gcc -EL" "CFLAGS=-EL" "LDFLAGS=-EL" --enable-shared --disable-readline --disable-dynamic-extensions

6、修改setup.py
detect_modules函数:
函数的前两行是把/usr/local加到搜索目录中,我们的cross compiler一般不会直接安装在 /usr/local里面的,所以这两行去掉:
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')

7、之后就要对Makefile做一些修改:
(1)把
# OPT= -DNDEBUG -g -O3 -Wall -Wstrict-prototypes
OPT= -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
一行中,去掉-g,我们不要debug python,站群软件,-O3改为-O2,空间紧张O2就可以了。
(2)在:
PGEN= Parser/pgen$(EXE)
一行的下面加上:
PGEN_HOST= build.pc/Parser/pgen$(EXE)
表明我们在HOST上运行的pgen。
(3)在要使用PGEN的地方改为PGEN_HOST:
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
-$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
改为:
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
-$(PGEN_HOST) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
(4)修改所有使用新生成的python的地方。
所有如 ./$(BUILDPYTHON) 的地方,都改为python,如:
platform: $(BUILDPYTHON)
$(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
改为:
platform: $(BUILDPYTHON)
$(RUNSHARED) python -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
这种地方比较多,共16处,需小心修改。

8、make 出现错误:
Include/pyport.h:243: error: #error "This platform's pyconfig.h needs to define PY_FORMAT_LONG_LONG"
修改pyconfig.h: 找到#undef PY_FORMAT_LONG_LONG 处加:#define PY_FORMAT_LONG_LONG "ll"
9、再次make还是有错误,专题系统,把Lib、Tools和Module目录copy到上一级目录
10、make,make install
11、在开发板上通过nfs进入到当前路径执行./python,成功;
12、编译测试程序:
mips-linux-gnu-gcc -EL test.c -L. -lpython2.7

#include "./Include/Python.h"
int main()
{
printf("1111\n");
Py_Initialize();
PyRun_SimpleString("print 'hi,python!'");
Py_Finalize();
return 0;
}

13、执行测试程序

14、只能通过nfs来再开发板上执行,目前还没有找到完全移植到开发板上的办法;

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:十堰网站制作 http://shiyan.666rj.com

上一篇:CPC赚钱、CPA赚钱、CPS赚钱,该选择哪种赚钱方式 下一篇:最后一页