基本上是参考网上的文章,具体原理性的东西我也不太懂
- 开发板: 友善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
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目录
在开发板的终端里出现如上图所示,则表示移植成功
|