本文基于飞凌OKMX6Q/DL开发板为基础讲解,主要使用平台是imx6系列,linux3.0.35操作系统,其他平台也可以参考,不同平台之间会存在差异,需自行修改适应自己的使用
iMX6 Python移植
注:所需工具包在Python移植/工具包
已经生成的可移植Python在Python移植/output
过程一:Python编译过程
准备工作
以下文件在下面的编译中需要用到
Python-2.7.13.tgz
sqlite-autoconf-3200100.tar.gz
Python-2.7.13-xcompile.patch.tar.gz
ntp-4.2.8p10.tar
setuptools-0.6c11-py2.7.egg
openssl-OpenSSL_1_0_1b.zip
zlib-1.2.3.tar.g
准备环境
cd /root
mkdir mx6q-python2.7/ && cd mx6q-python2.7
mkdir –p{python2_7_13_for_x86_64,python2_7_13_for_arm,INSTALL,sqlite3,misc,output/sources}
复制上文中准备的软件包到mx6q-python2.7,把zlib-1.2.3.tar.gz和openssl-OpenSSL_1_0_1b.zip移动到misc目录下。或者直接复制提供的软件包中mx6q-python2.7文件到/root目录下。
确定交叉编译工具链
确定当前交叉编译器链,如果交叉编译链不一致, 替换下文中的编译器。当前的交叉编译链为arm-none-linux-gnueabi-.可以通过下面命令确定当前编译链。
find / -name arm-*-gcc
如果交叉编译链不一致,替换下文中的编译器
编译安装
编译安装sqlite3
编译安装sqlite3, python需要sqlite3支持。
cd /root/mx6q-python2.7/
tar xvf sqlite-autoconf-3200100.tar.gz
cd sqlite-autoconf-3200100
./configure --host=arm-none-linux-gnueabi --prefix=$PWD/../sqlite3
make -j8 && make install
编译openssl和zlib
编译zlib
cd /root/mx6q-python2.7/misc/
tar xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
mkdir arm_install
./configure --prefix=./arm_install/
sed -i 's/gcc/arm-none-linux-gnueabi-gcc/g' Makefile
sed -i 's/AR=ar/AR=arm-none-linux-gnueabi-ar/g' Makefile
make
make install
编译openssl
cd /root/mx6q-python2.7/misc/
unzip openssl-OpenSSL_1_0_1b.zip
cd openssl-OpenSSL_1_0_1b
mkdir arm_install
./Configure --prefix=`pwd`/arm_install/ os/compiler:arm-none-linux-gnueabi-gcc
需要修改Makefile中的CC变量为CC= $(CROSS_COMPILE)gcc
make
make install
打包编译好的安装包,移植到开发板需要用到
cd arm_install
tar jcvf openssl-OpenSSL_1_0_1b.tar.bz2 *
cp openssl-OpenSSL_1_0_1b.tar.bz2 /root/mx6q-python2.7/output/sources
l编译python2.7
编译python2.7 for x86
cd /root/mx6q-python2.7/
tar xvf Python-2.7.13.tgz
cd python2_7_13_for_x86_64/
sed -i 's/self.extensions.remove(ext)/print(ext.name)/g' ../Python-2.7.13/setup.py
../Python-2.7.13/configure --prefix=`pwd`
make -j8 && make install
编译python2.7 for arm
打补丁
cd ..
tar xvf Python-2.7.13-xcompile.patch.tar.gz -C Python-2.7.13
cd Python-2.7.13/
patch -p1 < Python-2.7.13-xcompile.patch
修改模块连接配置
vim Modules/Setup.dist,取消下列配置注释
zlib zlibmodule.c -I$(prefix)/include -L$(prefix)/lib -lz
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
编译python2.7 for arm
配置
cd ../python2_7_13_for_arm/
拷贝bksh文件到/root/mx6q-pythin2.7/下
cp ../bksh/py2* .可直接运行脚本py2config-for-arm.sh
或者输入下面的指令。
../Python-2.7.13/configure --prefix=`pwd` \
--host=arm-none-linux-gnueabi \
--build=x86_64-linux-gnu \
--enable-ipv6 \
--enable-static \
ac_cv_file__dev_ptmx="yes" \
ac_cv_file__dev_ptc="no" \
LDFLAGS="-L$PWD/../sqlite3/lib -L$PWD/lib" \
CPPFLAGS="-I$PWD/../sqlite3/include -I$PWD/include -I$PWD/include/openssl"
在下一步make执行之前,需要先安装zlib和openssl,并将其各自的include和lib拷贝到python2_7_13_for_arm文件夹下.或者可直接运行py2-cp-libAndssl-arm-toHere.sh脚本会自动把misc下的zlib和openssl库的头文件和库拷贝到当前目录下。
编译
cd /root/mx6q-python2.7/python2_7_13_for_arm/
运行py2make-for-arm.sh或者运行下面的命令。
make HOSTPYTHON=../python2_7_13_for_x86_64/python \ HOSTPGEN=../python2_7_13_for_x86_64/Parser/pgen \ BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \ CROSS_COMPILE=arm-none-linux-gnueabi- \ CROSS_COMPILE_TARGET=yes \ HOSTARCH=arm-none-linux-gnueabi \ BUILDARCH=x86_64-linux-gnu \ SSL=`pwd`
安装
运行py2install.sh或者运行下面的命令。
make install HOSTPYTHON=../python2_7_13_for_x86_64/python \
BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \
CROSS_COMPILE=arm-none-linux-gnueabi- \
CROSS_COMPILE_TARGET=yes \
prefix=$PWD/../INSTALL
打包
cd ../INSTALL/
tar jcvf python2.7-for-arm.tar.bz2 *
cp python2.7-for-arm.tar.bz2 ../output/sources/
lntpdate网络时间同步工具
交叉编译
cd /root/mx6q-python2.7
tar xvf ntp-4.2.8p10.tar.gz
cd ntp-4.2.8p10/
mkdir arm_install
./configure --prefix=$PWD/arm_install --host=arm-none-linux-gnueabi --enable-static --with-yielding-select=yes
make && make install
打包
如果不需要帮助文档可把arm_install目录下的/share目录删掉,减少占用。
cd arm_install
rm share -rf [可选]
tar jcvf ntp-4.2.8.p10.tar.bz2 *
cp ntp-4.2.8.p10.tar.bz2 ../../output/
loutput输出目录
复制setuptools脚本到输出目录
cd /root/mx6q-python2.7/
cp setuptools-0.6c11-py2.7.egg output/sources/
最后的目录格式如下:
├── ntp-4.2.8.p10.tar.bz2
└── sources
├──openssl-OpenSSL_1_0_1b.tar.bz2
├── python2.7-for-arm.tar.bz2
└── setuptools-0.6c11-py2.7.egg
到此,python编译完整, 移植到开发板的步骤请参考"python2.7直接使用手册".
过程二:Python在开发板配置
将以上生成的output文件夹拷贝到iMX6Q开发板
1.解压缩包岛开发版
tar xvf python2.7-arm.tar.bz2 -C/
tar xvfopenssl-OpenSSL_1_0_1b.tar.bz2 -C/
cpsetuptools-0.6c11-py2.7.egg/
cp ntp-4.2.8p10-arm-no-share.tar.gz/
2.修改配置
修改文件/lib/pkgconfig/python2.pc如下.
prefix=/
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
修改文件vi /bin/python2.7-config的第一行如下.
#!/bin/python2.7
在/etc/profile中添加一下配置, 修改成功后source /etc/profile
export PYTHONHOME=/
export PYTHONPATH=$PYTHONHOME:$PYTHONHOME/lib/python2.7:$PYTHONHOME/lib:$PYTHONHOME/lib/python2.7/site-packages
export PATH=$PATH:$PYTHONHOME:$PYTHONPATH
3.进入到easy_install文件夹, 安装easy_install.
输入/bin/bash setuptools-0.6c11-py2.7.egg安装easy_install.
修改文件vi /etc/profile,
添加alias easy_install='easy_install -i http://pypi.douban.com/simple'.
保存退出便于之后安装管理, source /etc/profile使生效配置
4.取消SSL全局验证并验证easy_install,修改文件vi /bin/easy_install增加如下配置.
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
5.配置好网络
参考其他配置应用笔记配置网络的方法。
6.安装ntp网络对时, 进入ntp文件夹.
tar xvf ntp-4.2.8p10-arm-no-share.tar.gz -C /
ntpdate time.buptnet.edu.cn
注:此处可能因为对时网址问题会出现错误,针对报错信息直接搜索即可解决。
7.安装pip
easy_install pip安装成功后, pip -V查看当前安装版本.
8.pip安装模块测试
pip install requests
pip list查看已安装的模块.
9.导入模块测试,输入python2.7进入python2.7 shell.输入import requests,无错误输出。输入exit()退出python shell.
-
iMX6
+关注
关注
1文章
33浏览量
13740
发布评论请先 登录
相关推荐
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之PWM
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之移植前的准备
飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之移植前的准备
Imx6输出双路LVDS信号到DS90ub947,如何配置寄存器使得947双路输出?
用IMX6q通过I2C控制tlv320aic3254芯片,如何通过PPS软件进行miniDSP编程实现均衡器功能?
PICO-IMX8PL和SRG-IMX8PL:共创您的物联网集成网关
![PICO-<b class='flag-5'>IMX</b>8PL和SRG-<b class='flag-5'>IMX</b>8PL:共创您的物联网集成网关](https://file.elecfans.com/web2/M00/16/1D/pYYBAGFQTK6ACV9_AABMCPLXXTE620.jpg)
【米尔NXP i.MX 93开发板试用评测】04.OpenWRT的构建-开始编译
如何在NXP源码基础上适配ELF 1开发板的PWM功能
![如何在NXP源码基础上适配ELF 1<b class='flag-5'>开发板</b>的PWM功能](https://file1.elecfans.com/web2/M00/05/C4/wKgZombem8eAdoE_AABFKKlF4AA364.png)
【正点原子i.MX93开发板试用连载体验】+开箱与硬件介绍
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-在NXP源码基础上适配ELF 1开发板的按键功能
飞凌嵌入式ElfBoard ELF 1板卡-在NXP源码基础上适配ELF 1开发板的按键功能
米尔基于NXP iMX.93开发板的M33处理器应用开发笔记
![米尔基于NXP <b class='flag-5'>iMX</b>.93<b class='flag-5'>开发板</b>的M33处理器应用<b class='flag-5'>开发</b>笔记](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
ELF 1技术贴|在NXP源码基础上适配开发板的按键功能
![ELF 1技术贴|在NXP源码基础上适配<b class='flag-5'>开发板</b>的按键功能](https://file1.elecfans.com/web2/M00/C3/62/wKgZomXq0ymANr0hAABDmHpF1tQ264.png)
ELF 1技术贴|如何将Python3.6.9移植到开发板上
![ELF 1技术贴|如何将<b class='flag-5'>Python</b>3.6.9<b class='flag-5'>移植</b>到<b class='flag-5'>开发板</b>上](https://file1.elecfans.com/web2/M00/C0/94/wKgZomXW5EiAf1EoAABBQv84DIc700.png)
评论