python3交叉编译(一)
Python3交叉编译步骤
一.项目场景
在cortex-A9主板上运行python3,能够使用常用的三方库
二.配置
主机环境:ubuntu-18.04-x86_64(虚拟机)
交叉编译链:arm-linux-gnueabihf-gcc
开发板:cortex-A9(armv7l)
三.安装交叉编译器
安装编译器
拷贝编译链压缩包到虚拟机中的Documents目录,CD到该目录然后执行tar -xvf gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf.tar.xz 得到gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf
配置环境变量
Cd到/home/用户/目录vim .bashrc,编辑终端的配置文件,将交叉编译工具加入环境变量
PATH=$PATH:/home/user_name/Documents/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/ export PATH
保存并退出.bashrc,重新启动终端,输入gcc -v测试交叉编译工具,出现下图则配置成功
四 下载python
新建一个文件夹,虚拟机联网:在命令行中输入:wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
下载成功后开始解压
或者直接拷贝相应的源码Python-3.6.9.tar.xz到ubuntu解压
Cd到安装包目录执行以下命令:
1. tar -xvf Python-3.6.9.tar.xz
五安装相关依赖
使用下面的命令进行安装编译所需要的依赖
1. sudo apt-get install openssl 2. sudo apt-get install libssl-dev
六.编译本机HOST解释器
在交叉编译的时候需要在HOST PC上运行对应版本的Python程序,所以需要先编译HOST PC上面用的Python,运行以下命令
1. cd Python-3.6.9/ 2. ./configure --prefix=$PWD/../_install_host --enable-shared 3. make -j4 4. make install 5. make distclean
–-prefix指定的目录可自行修改,但不要放在Python-3.6.9目录里,因为后续执行make distclean会清掉一些文件。
把生成HOST PC端即_install_host目录中的bin和lib,加到环境变量里面去,此处的地址为_install_host的地址我的地址是:/home/h5000/Desktop/data/_install_host后续交叉编译就会自动找到python3了,其指令如下:
export PATH=/home/XXX/_install_host/bin:$PATH
export LD_LIBRARY_PATH=/home/XXX/_install_host/lib:$LD_LIBRARY_PATH
输入以上指令后,在Ubuntu输入python3 指令 如图2.2所示:
至此,本机已经编译完成
接下来编译目标板(arm板)
七.配置交叉编译工具链
这里采用的是arm-linux-gnueabihf交叉编译工具链
/home/h5000/Documents/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf-gcc
配置交叉编译工具链命令如下:
1. cd Python-3.6.9/ 2. mkdir _install 3. ./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="no"
–host是交叉编译工具链,–build表示编译出来的程序运行的处理器,–prefix表示安装目录。
八.目标板编译安装
在Python-3.6.9目录中,运行以下命令
1. make –j4 2. make install
若出现报错:subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1.
执行以下命令后重新make install即可
1. sudo rm -rf /usr/bin/lsb_release 2. make install
编译成功后在/home/h5000/Desktop/data/Python-3.6.9/_install目录下生成bin,include,lib,share四个文件夹,如图所示
九.移植到开发板并测试
将交叉编译出来的_install目录压缩打包拷贝到目标板,然后解压,
1. tar -xvf _install 2. Cd /usr/bin/ 3. mkdir python 4. cd _install 5. cp -r bin /usr/bin/python 6. cp -r include /usr/bin/python 7. cp -r lib/usr/bin/python 8. cp -r share /usr/bin/python
然后把解压出来的bin,include,lib,share四个文件夹复制到python目录中
然后配置开发板的环境变量,把python加入环境变量中
输入vi ~/.bashrc
添加:export PYTHONPATH="/yourpath/:$PYTHONPATH"
执行source ~/.bashrc使修改立即生效
保存后输入python3查看
至此,交叉编译移植已完成
参考文章:
https://blog.csdn.net/foreverey/article/details/116946569
https://blog.csdn.net/qq_33753562/article/details/120972805
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通