一、参考资料
二、准备工作
-
源代码文件:Python-3.7.9.tgz
下载地址:https://www.python.org/downloads/source/ -
目标板:华为ME909,arm-a9。RAM约100MB,内部FLASH约100MB。
三、编译过程
1.编译电脑版phthon
- 安装依赖包
sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev
- 解压python源码文件
tar -zxvf Python-3.7.9.tgz
- 编译源码
mkdir build.pc
cd build.pc
../configure --enable-optimizations
make
make install
- 清除中间文件
make clean
cd ../
- 运行测试,以下提示说明成功
alinx@ubuntu:~$ python3
Python 3.7.9 (default, Feb 18 2021, 16:51:44)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
2.编译嵌入式arm版python
- 手动创建build.me909文件夹,手动创建myautome909.sh脚本,内容如下,并执行该脚本。
./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib --host=arm-linux-gnueabihf --build=i686-linux-gnu --target=arm-linux-gnueabihf --enable-shared --disable-ipv6 --with-system-ffi ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no --enable-optimizations --prefix=/home/alinx/work/opencpu/Python/Python-3.7.9/build.me909
- 修改Makefile
OPT= -DNDEBUG -g -fwrapv -O3 -Wall
为
OPT= -DNDEBUG -fwrapv -O3 -Wall
- 编译
make
make install
此时在安装目录(./Python-3.7.9/build.me909)下会有include、share、bin和libl四个文件夹。
- 拷贝以上四个文件夹到嵌入式linux文件系统
此处因内部FLASH存放不小,故放在tf卡内。
tar -cvf python20210219.tar ./*
adb push python20210219.tar /sdcard/mypython/
adb shell
cd /sdcard/mypython/
tar -xvf python20210219.tar
root@android:/sdcard/mypython # ll
drwxr-xr-x 2 system system 4096 Jan 1 20:51 bin
drwxr-xr-x 3 system system 4096 Jan 1 20:51 include
drwxr-xr-x 4 system system 4096 Jan 1 20:51 lib
-rw-rw-rw- 1 root root 119142400 Feb 19 2021 python20210219.tar
drwxr-xr-x 3 system system 4096 Jan 1 20:51 share
- 将/sdcard/mypython/lib/加入环境变量LD_LIBRARY_PATH动态库搜索路径
export LD_LIBRARY_PATH="/vendor/lib:/system/lib:/app/lib:/cust/app/lib:/sdcard/mypython/lib"
- 将/sdcard/mypython/bin/加入环境变量PATH
export PATH="/bin:/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/app/bin:/cust/app/bin:/system/bin/bcm43217/exe:/sdcard/mypython/bin"
- 运行测试,出现以下提示说明成功
root@android:/sdcard # python3
Python 3.7.9 (default, Feb 18 2021, 17:09:35)
[GCC 6.2.1 20161016] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
- helloworld程序
root@android:/sdcard/mypython/demo_test # cat helloworld.py
print("hello world\n")
root@android:/sdcard/mypython/demo_test # python3 helloworld.py
hello world