👉资源下载👈
👆👆👆👆编译需要的文件请下载
移植python3.6.2至FCU1101笔记:
一、安装环境
- 要求
- 直接编译python,在Ubuntu中安装Python3解释器
- 交叉编译python
- 复制可移植文件到arm文件系统
平台环境
- host:Ubuntu 12.04 LTS(32位)i386
- target: 6Q-C_linux3.14.38
- 虚拟机:VMware® Workstation 15 Pro
- python版本:3.6.2
- 编译工具链:arm-fsl-linux-gnueabi-gcc
- 编译工具链版本:gcc version 4.6.3
- 编译依赖库必要文件
- openssl-OpenSSL_1_0_1b.zip
- zlib-1.2.3.tar.gz
- sqlite-autoconf-3330000.tar.gz - 具体步骤:
- 编译 openssl 和 zlib,编译安装sqlite3, python需要sqlite3支持
cd /opt/
mkdir mx6q-python3.6 && cd mx6q-python3.6
mkdir misc && cd misc
- 把openssl-OpenSSL_1_0_1b.zip、sqlite-autoconf-3330000.tar.gz和
zlib-1.2.3.tar.gz放到当前目录下
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
cd /opt/mx6q-python3.6/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-linuxgnueabi-gcc
- 需要修改 Makefile 中的 CC 变量为 CC= $(CROSS_COMPILE)gcc
make && make install
cd /opt/mx6q-python3.6/misc/
tar xvf sqlite-autoconf-3330000.tar.gz
cd sqlite-autoconf-3330000
./configure --host=arm-none-linux-gnueabi --prefix=$PWD/../sqlite3
make -j8 && make install
- 编译PC版python
将安装包复制到/opt/mx6q-python3.6文件目录下并解压
tar –zxvf Python-3.6.2.tgz
cd /opt/mx6q-python3.6/Python-3.6.2
./configure
- 编译Python的嵌入式版需要解释器解析,从而编译Python的模块,因此需要先编译出host的解释器,不然无法编译arm版python执行make和make install
make && make install
这时Ubuntu已经安装python3.6.2,通过python3查看
二、编译安装target版Python
- 在Python-3.6.2文件夹 清除pc版编译痕迹
make clean
make distclean
2.把zlib编译好的include和lib目录与复制到/opt/mx6q-python3.6/Python-3.6.2
修改Modules/Setup.dist。修改并取消掉下面的注释
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib –lz
SSL=/opt/mx6q-python3.6/misc/openssl-OpenSSL_1_0_1b/arm_install
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto
- 交叉配置
./configure --host=arm-fsl-linux-gnueabi \
--build=i386 \
--prefix=`pwd` \
CC=arm-fsl-linux-gnueabi-gcc \
RANLIB=arm-fsl-linux-gnueabi-ranlib \
AR=arm-fsl-linux-gnueabi-ar \
CXX=arm-fsl-linux-gnueabi-g++ \
ac_cv_file_udev_ptmx=yes \
ac_cv_file__dev_ptmx=yes \
ac_cv_file__dev_ptc=no \
--disable-ipv6 \
--with-ensurepip=yes \
--enable-optimizations \
LDFLAGS="-L/opt/mx6q-python3.6/misc/sqlite3/lib -L/opt/mx6q-python3.6/misc/sqlite3/lib " \
CPPFLAGS="-I/opt/mx6q-python3.6/misc/sqlite3/include -I/opt/mx6q-python3.6/misc/sqlite3/include "
/*会自动安装pip3及优化配置*/
/*说明:--host你编译好的程序可以运行的平台*/
/*说明:--build=i686你正在使用的机器*/
/*说明:--prefix make install的安装目录*/
/*说明:其他参数没有就报错,添加上就行了*/
3.编译命令
make #make 期间Python-3.6.2/lib中的lib包会被删除,需要将原包中的lib包复制过来,会删除两次,缺少不能成功编译
rm -rf /usr/bin/lsb_release
make install #make install 会报错需执行上句命令
漫长的等待过程后,在当前目录有4个文件夹
cd /opt/mx6q-python3.6/Python-3.6.2
mkdir python3
mv ./bin ./python3
mv ./include ./python3
mv ./lib ./python3
mv ./share ./python3
将上面四个文件打包然后拷贝到板子上
tar -czvf python3.tar.gz python3
解压到文件系统/opt目录下
tar zxvf python3.tar.gz
修改文件/etc/profile,在末尾添加环境变量
export PATH=/opt/mylib/bin:$PATH
export LD_LIBRARY_PATH=/opt/mylib/lib:$LD_LIBRARY_PATH
同时注释掉python2的环境变量,否则会报错
wq保存退出,sync后重启
然后输入python3运行
三、为Python安装pip工具
由于python需要安装相当多的模块,可以使用pip 安装,pip被当作easy_install的替代品
步骤一:python在python3.x以上的发行版本中,都是自带pip的。python3中的pip叫pip3。首先尝试从标准库中对其进行引导
python3 -m ensurepip --default-pip