移植Python3.7到S3C2440

基本上是参考网上的文章,具体原理性的东西我也不太懂

  • 开发板: 友善mini2440
  • gcc: arm-linux-gcc 4.4.3
  • 宿主机: deepin-linux-20

1.下载python3.7

百度搜索Python国内下载 去阿里源下载Python-3.7.10.tgz就行。别下太新的,也许编译通不过。
也别下3.6之前的,因为我在开发板上要运行下载的get-pip.py(自行百度)说是不支持3.6版本之前的。

2.编译宿主机Python

cd Desktop/Python-3.7.10/
mkdir build.pc
cd build.pc
sudo ../configure //这里直接configure就行,因为这里是编译x86的Python 采用默认配置就好
sudo make -j4 & make install
sudo rm /usr/bin/python //先删除电脑上你正在使用的Python的软连接,替换为刚刚编译的python版本
sudo ln -sf /usr/local/bin/python3.7 /usr/bin/python //替换
python -v //看看版本是不是替换过来了。上面的文件路径要依据你自己的电脑的实际情况。

3.交叉编译

然后接下来的步骤基本上是依据这个博客
注意要先编译(交叉编译)sqlite 并在python的setup.py里修改sqllite的路径

按照里面的步骤,先make Parser
然后 
mkdir build.arm install.arm 
sudo ../configure --host=arm-linux --build=arm --prefix=/home/wangke/Desktop/Python-3.7.10/install.arm/ CC=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc CXX=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-g++ AR=/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-ar --disable-ipv6 --enable-shared READELF=arm-linux-readelf ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --enable-optimizations
/*进行编译配置,会生成Makefile 这里注意编译器路径要用绝对路径/opt/FriendlyARM/toolschain/4.4.3/bin/arm-linux-gcc, 如果提示你有错误,改正就好, 一般来说查看config.log 然后修改第一级目录下的configure文件(一般是直接整段注释掉提示出错的地方),
如果能正常生成Makefile 说明配置基本成功, 但是还是要检查和按照上面的博客修改下Makefile和setup.py*/

4. sudo make & make install

在刚刚设置的–prefix=/home/wangke/Desktop/Python-3.7.10/install.arm/ 文件夹下就有 编译好的 python可执行程序(解释器),和相关的库文件等,将该目录下的所有文件和文件夹拷贝到开发板,比如我的是/mnt/sdcard
然后在开发板的终端里面

vi /etc/profile //没有自己建一个
添加上
export PATH=$PATH:/mnt/sdcard/python/bin   # 用于执行python,填写 Python目录中的Bin目录即可export PYTHONPATH=               # 这一行是为了额外的模块的搜索,根据实际模块的使用情况进行填写,可留空,可参考附录进行填写
export PYTHONHOME=/mnt/sdcard/python
export LD_LIBRARYPATH = $LD_LIBRARYPATH: python 文件下的/lib
保存退出
source /etc/profile
重启开发板
pytthon3 -v
如果提示缺少库什么的
在宿主机上 arm-linux-readelf -d 刚刚编译好的python3.7可执行程序,查看一下需要哪些库
 0x00000001 (NEEDED)                     Shared library: [libpython3.7m.so.1.0]
 0x00000001 (NEEDED)                     Shared library: [libcrypt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libpthread.so.0]
 0x00000001 (NEEDED)                     Shared library: [libdl.so.2]
 0x00000001 (NEEDED)                     Shared library: [libutil.so.1]
 0x00000001 (NEEDED)                     Shared library: [librt.so.1]
 0x00000001 (NEEDED)                     Shared library: [libm.so.6]
 0x00000001 (NEEDED)                     Shared library: [libc.so.6]
没有的从编译器的库文件夹/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/lib里面拷贝到开发板LD_LIBRARYPATH(好吧好像是这个名字)指定的目录下 或者默认的/lib目录

移植Python3.7到S3C2440
在开发板的终端里出现如上图所示,则表示移植成功

上一篇:关于keil里调用arm_math.h库的一个问题


下一篇:《嵌入式系统 - RT-Thread开发笔记》 第三部分 RT-Thread 移植与设备驱动开发 - 第1章 RT-Thread 开发环境搭建 (Ubuntu)