Ubuntu 16.04 下交叉编译python3.5到arm板子,荔枝派Nano为例!
虽然网上有那么多python的交叉编译移植教程,但是方法差异蛮大,需要根据实际开发板的型号做调整,以下是适用于荔枝派Nano的板子移植过程。下载python3.5源码准备一个Ubuntu16.04环境,虚拟机 or 实体机均可编译前的预准备第一步,将源码首先编译一遍,因为需要用到一些Python的解释模块,需要提前生成cd Python3.5.2mkdir prebuildcd prebuild.
·
虽然网上有那么多python的交叉编译移植教程,但是方法差异蛮大,需要根据实际开发板的型号做调整,以下是适用于荔枝派Nano的板子移植过程。
- 下载python3.5源码
- 准备一个Ubuntu16.04环境,虚拟机 or 实体机均可
- 编译前的预准备
第一步,将源码首先编译一遍,因为需要用到一些Python的解释模块,需要提前生成
cd Python3.5.2
mkdir prebuild
cd prebuild
./configure
make
cd ..
第二步,进行交叉编译的环境设置,请注意,荔枝Nano交叉编译器,用的arm-linux-gnueabi-gcc,版本是gcc 5.4.0,在这里,我们需要创建一个空文件夹,用于指定编译好的Python,安装位置,再/opt下创建一个python3的文件夹,然后执行如下命令
sudo mkdir /opt/python3
./configure CC=arm-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ AR=arm-linux-gnueabi-ar RANLIB=arm-linux-gnueabi-ranlib --host=arm-linux-gnueabi --build=x86_64-linux-gnu --target=arm-linux-gnueabi --disable-ipv6 --prefix=/opt/python3 --with-ensurepip=yes --enable-optimizations ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=yes
第三步,进行一些关键文件的修改
- 源码目录下的setup.py,将如下注释掉,不需要检索这个目录。
if cross_compolile:
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
- Makefile文件
OPT= -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
改为
OPT= -DNDEBUG -fwrapv -O2 -Wall -Wstrict-prototypes
- PGEN更改
PGEN= Parser/pgen$(EXE)
#这儿新增
PGEN_HOST= build.pc/Parser/pgen$(EXE)
$(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)
- BUILDPYTHON更改
BUILDPYTHON 的定义处
该处下面增加如下代码
PYTHON_HOST=build.pc/python$(EXE)
然后全局搜索 ./$(BUILDPYTHON)
改为 ./$(PYTHON_HOST)
- 偶现错误:
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"
第四步:
make
sudo make install
第五步:
将/opt/python3下的文件,拷贝到arm板子上,设置好PATH路径,PYTHONHOME 和 LIB路径,开始运行Python吧
效果图:
更多推荐
所有评论(0)