一、背景
主要想在imx6dl的开发板上运行python的第三方表格操作库。最好是python3的。。默认自带了python2.7的,有点老。重新构建buildroot好像有点麻烦。
二、平台环境
- 主机:vurtual box + ubuntu18.04 x64
- 目标板:imx6dl (cortexA9 ,arnv7)
- python版本:3.9.5
- 工具链:gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux(默认添加到环境变量里)。
三、安装过程
1,下载源码包。
https://www.python.org/downloads/source/ ,搜索3.9.5版本。下载tar.xz包。
拷贝到安装包到ubuntu虚拟机里。,命令如下:
tar -xf Python-3.9.5.tar
2,编译PC-host版本
交叉编译前,需要先host主机安装上当前的版本,也就是用本机python配合编译。命令如下
cd Python-3.9.5/
./configure --prefix=$PWD/../local_python3_install --enable-shared
make -j4
make install
make distclean
需要注意:不能放默认路径。否则distclean时会被清理掉。
--------------------------------------------------如果在编译过程中报错或者在编译安装时报错,请参考附录。
把当前的刚刚生成的执行文件和库信息添加到环境变量里,也可以只配置临时环境变量。
export PATH=/home/xxx/local_python3_install/bin:$PATH
export LD_LIBRARY_PATH=/home/xxx/local_python3_install/lib:$LD_LIBRARY_PATH
3,配置交叉编译信息
这里用的是arm-linux-gnueabihf交叉编译工具链,生成32位的arm平台。直接添加到环境变量里最好。
配置交叉编译命令:
cd Python-3.9.5/
./configure --host=arm-linux-gnueabihf --build=armv7 \
--prefix=$PWD/arm_install \
--enable-ipv6 \
--enable-shared \
ac_cv_file__dev_ptmx="yes" \
ac_cv_file__dev_ptc="yes"
–host是交叉编译工具链,–build表示编译出来的程序运行的处理器,–prefix表示安装目录。等会在arm_install目录里找关键文件。
4,编译安装
进入python-3.9.5目录里,运行以下命令
make -j4
make install
有错误信息的话参考附录里解决方案。
5,移植到开发板
把arm_install 目录下的bin/* 拷贝到开发板的 /usr/bin目录下。
把arm_install 目录下的lib/* 拷贝到开发板的 /usr/lib目录下。
方法有很多,如果用ssh登录可以用mobaxterm工具传数据,也可以用SD卡。也可以用scp命令拷贝,也可以用nfs,ftp等。
6,编译其他模块。
请根据其他相应模块先独自交叉编译,编译出对应的lib、include目录后,在configure配置命令中加入对应的目录,如下以下指令中的LDFLAGS、CPPFLAGS参数
以这里以zlib库为例,我先单独编译了.
./configure --host=arm-linux-gnueabihf --build=armv7 --prefix=$PWD/_install \
--enable-ipv6 --enable-shared \
ac_cv_file__dev_ptmx="yes" ac_cv_file__dev_ptc="yes"\
LDFLAGS="-L/home/gec/work_ellip/hw_pc/zlib-1.2.13/arm-build/lib" \
CPPFLAGS="-I/home/gec/work_ellip/hw_pc/zlib-1.2.13/arm-build/include"
编译安装完成后,拷贝到开发板之后。
在开发板中执行:
$ python3.9
import zlib
没有报错即可。
附录
错误处理
1,配置,交叉编译阶段出错时,
- 排查交叉编译器环境变量是否正常,在终端输入arm- 按tab是否能补齐,如果不能补齐,检查下环境变量,执行source ~/.bashrc 然后重启下终端。
- 排查交叉编译器名称和输入的是否一致。
- 当前python环境是否正常。
- 查看报错信息具体内容。
2, 编译安装(make install)阶段出错:
把以前的python3卸载干净,从第2步开始执行,注意不要把python2也卸载掉。否则ubuntu会崩溃。