微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 之移植Python2.7与sqlite3到TL-4379

之移植Python2.7与sqlite3到TL-4379

时间:10-02 整理:3721RD 点击:

【创龙AM4379 Cortex-A9试用体验】之移植Python2.7与sqlite3到TL-4379

Python以简单易学、丰富的第三方库、优秀的跨平台特性、高效的开发效率等,使得Python成为了世界排名第五的编程语言,尤其是2016年初的“引力波”的发现,其数学运算的开发工具用的就是Python。

鉴于Python上述优良特性,我们可以把Python移植到能够在ARM体系结构的处理器上,并使其运行在嵌入式的Linux系统平台上,提高我们开发基于socket、sqlite应用程序的速度,快速实现工作中的某些功能测试软件开发。

本移植的目的是,在TL-4379软、硬件平台上运行的Python程序能够实现socket通讯,以及基于sqlite的本地数据库存储,为我的数据中继服务器做好前期基础工作。

1. 移植sqlite3

要想Python在ARM平台上也支持sqlite,首先我们需要先变成出ARM版的sqlite可执行程序,以及其相对应的include和lib文件,供后续的Python移植、交叉编译使用。

下载sqlite3.6.16,即sqlite-amalgamation-3.6.16.tar.gz

将sqlite-amalgamation-3.6.16.tar.gz拷贝到Ubuntu虚拟机,执行如下命令:

tar -zxvf sqlite-amalgamation-3.6.16.tar.gz-C /media/tl437x/reference

执行结果如图所示:


执行命令:

cd sqlite-3.6.16

执行configure命令,生成Makefile,

./configure --host=arm-linux-gnueabihf--prefix=/home/tl/install_python --enable-shared--disable-readline --disable-dynamic-extensions

其中--host=arm-linux-gnueabihf代表我们安装的交叉编译工具链,--prefix=/home/tl/install_python代表交叉编译后,将sqlite3安装到的目标路径。

生成Makefile后,开始交叉编译sqlite3,执行命令:

make

编译结束后,执行安装命令:

make install

安装后的结果如图所示:


我们坚持一下bin目录下的可执行文件是否是ARM版本的,执行如下命令:

cd bin

file sqlite3

结果如图所示:


出现ARM字样,说明交叉编译是成功的。

2. 下载、解压Python2.7

我们以Python2.7.3为交叉编译目标,首先到网上下载Python2.7.3,同时必须下载Python2.7.3的补丁文件,否则无法完成对Python2.7的交叉编译。

将下载到的Python2.7源码包拷贝到Ubuntu虚拟机,执行解压缩:

tar -jxvf Python-2.7.3.tar.bz2 -C/media/tl437x/reference

结果如下图所示:


3. 配置、编译Python2.7

3.1 配置Python2.7对sqlite3的支持

执行命令切换到Python2.7的源码目录:

cd /media/tl437x/reference/Python2.7.3

执行如下命令,编辑Python2.7对sqlite的支持配置项“

gedit setup.py

修改的内容如图所示:




以上内容的修改,要与你自己在第一节介绍的sqlite交叉编译后安装路径相一致。

3.2 编译PC版的Python2.7相关文件

有在交叉编译Python过程中,需要用到相关的PC版本的文件,执行如下命令:

./configure

make python Parser/pgen

mv python hostpython

    mvParser/pgen Parser/hostpgen

make distclean

3.3 交叉编译Python2.7

1)下载Python2.7.3补丁

Python-2.7.3-xcompile.patch(我提供的附件已包含)

2)给Python2.7.3打补丁

cp /补丁路径/ Python-2.7.3-xcompile.patch ./

patch -p1 < <Python-2.7.3-xcompile.patch

3)执行命令,设置交叉编译器

CC=arm- linux-gnueabihf-gcc

CXX=arm- linux-gnueabihf-g++

AR=arm-linux-gnueabihf-ar

RANLIB=arm- linux-gnueabihf-ranlib

4) 执行configure,生产Makefile

./configure --host=arm-linux-gnueabihf--prefix=/python

5) 执行编译

make HOSTPYTHON=./hostpythonHOSTPGEN=./Parser/hostpgen BLDSHARED="arm-linux-gnueabihf-gcc -shared"CROSS_COMPILE=arm-linux-gnueabihf- CROSS_COMPILE_TARGET=yes)

6) 安装

make install HOSTPYTHON=./hostpythonBLDSHARED="arm-linux-gnueabihf-gcc -shared" CROSS_COMPILE=arm-linux-gnueabihf-CROSS_COMPILE_TARGET=yes prefix=/home/tl/Python-2.7.3/_install

其中prefix=/home/tl/Python-2.7.3/_install为安装路径

cd /home/tl/Python2.7.3/_install/bin

ls

file python2.7

查看结果如下所示:


说明我们对Python2.7.3的编译也是成功的。

4 测试Python2.7

1) 将交叉编译好的Python2.7.3拷贝到NFS共享目录

cp -R /home/tl/Python2.7.3 /nfsshare

2) 启动TL-4379开发板,挂载NFS

mount -t nfs 192.168.1.136:/nfsshare /mnt-o nolock

cd /mnt/Python2.7.3/_install/bin

./python

执行结果如下图所示:


说明Python2.7.3启动成功。

输入测试语句,如下图所示:


执行a=10

        b=10

    c=a+b

    pint c

    20

说明Python2.7运行正常。

测试导入其他库如图所示:


说明导入其他库成功。

5 小结

这一篇试用报告中,我们成功移植Python到TL-4379,为我们后续的其他功能测试做了基本的准备工作,接下来继续测试其他功能。


一直关注小编的报告更新,很精彩

谢谢,有问题大家一起讨论

对于给大家带来知识的,我们要给予掌声。

谢谢支持,继续努力,发扬开源、知识共享精神

Python2.7一般linux都是已经有了的吧

你自己在开发板上执行一下Python命令,看看是否能调用,别凡事就“一般”怎么怎么样

最好找一块那种非树莓派或卡片电脑那种跑debian系统的那种

我手头有一块天嵌E9的开发板,我烧写了Linux系统,我们看一下是否可以调用Python命令


我执行python命令:


如果你是一个标准的Ubuntu系统,或像树莓派这样的系统,商业化已经很成熟了,不排除Linux系统直接就把python放入bin目录了,但是对于一般的ARM开发板,学习用的,不是太成熟的,除了mini2440这种超级有名的开发板,多数是没有集成的,需要自己移植、交叉编译,“如果”,“一般”,“假如”,“不就是”这些想当然的词怎么经常会听到,不确定的时候最好自己亲自试一下,某人说过,没有调查就没有发言权,以免误导

学习了

老司机,求带路;好好学习,天天向上
老司机,求带路;好好学习,天天向上
老司机,求带路;好好学习,天天向上

我来看看 主要来向大神学习嵌入式培训www.arm8.net

最近项目时间太紧,没有时间逛论坛了,后续会继续跟大家交流

老司机,求带路;好好学习,天天向上

你好,你这说的太好了,我现在在ARM-linux系统下已经移植了python,可是我的程序需要pyaudio和pycurl库,我把这两个库拷贝后放在板子里,然后在对应目录下使用python setup.py install怎么无法安装,怎么才能安装成功呢,望前辈指教,跪求指导,急用,PC机程序都测试好了,就是现在需要嵌入式运行成功

学习一下,谢谢小编分享

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top