python3交叉编译
基于AM335X交叉编译python3
⼀、交叉编译python
本⼈选择的是python-3.6.6,⽹上有很多关于2.7的交叉编译,要求较多,个⼈建议从3.5以后的版本开始,成功率更⾼⼀些,但相对的容量也会偏⾼;先下载、解压python源码,输⼊⼀下命令:
cd Python-3.6.6
vi Modules/Setup.dist,将⼀些必要的模块释放出来[**通过将去掉"#"**]
./configure CC=arm-arago-linux-gnueabi-gcc CXX=arm-linux-gnueabi-g++ AR=arm-arago-linux-gnueabi-ar RANLIB=arm-arago-linux-gnueabi-ranlib --host =arm-arago-linux-gnueabi --build=arm --disable-ipv6 --prefix=/optarm_python ac_cv_file__dev_ptc=no ac_cv_file__dev_ptmx=no --eable-loadable-sqlite-e xtensions
make & make installpython虚拟机
**第⼀次编译可能会出现“subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1 ”错误,执⾏ rm /usr/bin/lsb_releas e**
编译成功后,在/opt/arm_python⽬录下可以看到⽣成的bin,lib,include,share⽂件夹。
⼆、移植到⽬标机器
上述编译⽅式是动态编译,⽣成的⽂件较⼤,不建议直接打包到⽬标板上,下⾯是我的测试步骤:
1. cp -r /opt/arm_python /nfsroot (nfsroot⽬录是我的挂载⽬录)
2. 到⽬标板上,将虚拟机中的nfsroot挂载到/mnt下命令为:mount -t nfs 虚拟机IP:/nfsroot /mnt -o nolock
3. cd /mnt/arm_python,输⼊./python3.6 回车看效果。
4. 如果提⽰缺少zlib库,⾃⼰交叉编译,将缺少的lib库放到/usr/lib下即可。
三、添加第三⽅库
添加第三⽅库,需要⾃⼰虚拟机的python版本⾼于交叉编译的版本,并且⽀持pip 和python setup.py
功能;⼀般是下载第三⽅库的源码包,解压进⼊主⽬录,执⾏python3 setup.py install --prefix=/opt/arm_python,⼀般出现的问题有:
1. 缺少setuptools模块,说明当前的python不⽀持setup.py install 功能,解决办法:去⽂件 ,接着执⾏ python3 get-pip.py,安装
成功后在进⾏。
2. 提⽰/opt/arm_python不是正确的安装路径,此时需要将你的安装路径设置到环境变量⾥,如:export
PYTHONPATH=$PYTHONPATH:/opt/arm_python/lib/python3.6/site-packages,这是我的安装路径,接着重新执⾏python setup.py install --prefix=/opt/arm_python。
提⽰,关于第三⽅库的安装,⽬前只测试了不带.c⽂件的简单库如bottle(⼀款web框架,没有其他的.c⽂件的依赖),否则可能需要对第三⽅库进⾏交叉编译后,再进⾏安装操作。
四、精简python
这⼀块,⽬前还在研究,⽹上查了很多资料,但还未有更好的⽅法,同时也欢迎⼤家留⾔,讨论!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论