?
Python 如何移植到 ARM 開(kāi)發(fā)板上,并有幾個(gè)簡(jiǎn)單的測(cè)試?yán)?/span>在迅為資料里下載的分享給大家學(xué)習(xí)~
1 源碼包
和文檔在一起的源碼包有:
“python-2.7.3 源碼和補(bǔ)丁.zip”---python 壓縮包和補(bǔ)丁文件;
“install_python.tar”---編譯好的 sqlite 庫(kù)文件;
“sqlite-autoconf-3240000.tar.gz”---sqlite 的源碼文件;
“測(cè)試程序”---python 測(cè)試?yán)獭?/span>
去 Python 官網(wǎng)下載源碼包 2.7.3,地址
https://www.python.org/downloads/source/,或者使用壓縮包中提供的源碼。?
?
?
?
通過(guò) ssh 將 Python-2.7.3.tar.bz2h 和補(bǔ)丁 Python-2.7.3-xcompile.patch 拷貝到
ubuntu 系統(tǒng)的 home/miniLinux 目錄下,使用命令 tar -vxf Python-2.7.3.tar.bz2 解壓源碼
壓縮包得到目錄 Python-2.7.3。?
?
?
2 編譯
2.1 編譯 host 版解釋器
編譯 Python 的嵌入式版需要解釋器解析 setup.py 從而編譯 Python 的模塊,因此需要
先編譯出 HOST 的解釋器。
進(jìn)入解壓出來(lái)的“Python-2.7.3”目錄,執(zhí)行命令“./configure”運(yùn)行配置文件。?
?
?
?
執(zhí)行配置文件之后,生成 Makefile 等文件。?
?
?
執(zhí)行命令“make python Parser/pgen”,編譯 PC 版 python Parser/pgen?
?
?
執(zhí)行命令“mv python hostpython”將生成的 PC 版移動(dòng)至 hostpython
執(zhí)行命令“mv Parser/pgen Parser/hostpgen”將生成的 PC 版解釋器移動(dòng)至
Parser/hostpgen。?
?
?
執(zhí)行命令“make distclean”清除不必要的文件。?
?
?
?
?
2.2 arm 補(bǔ)丁
交叉編譯的補(bǔ)丁我們已經(jīng)放到 minilinux 目錄下,執(zhí)行命令 patch -p1 <
/home/minilinux/Python-2.7.3-xcompile.patch 進(jìn)行打補(bǔ)丁。?
?
?
?
?
?
2.3 交叉編譯配置
在“/home/miniLinux/Python-2.7.3”目錄下執(zhí)行以下命令進(jìn)行設(shè)置
設(shè)置交叉編譯器 CC=arm-none-linux-gnueabi-gcc
設(shè)置 C++交叉編譯器 CXX=arm-none-linux-gnueabi-g++
設(shè)置 AR AR=arm-none-linux-gnueabi-ar
設(shè)置 RANLIB RANLIB=arm-none-linux-gnueabi-ranlib?
?
?
?
?
2.4 編譯和安裝測(cè)試
將壓縮包中提供的編譯好的 sqlite3 庫(kù)“install_python.tar”通過(guò) ssh 拷貝到
/home/minilinux 下然后解壓,得到“install_python”。
用戶也可以自己編譯 sqlite3 庫(kù),本文后面一小節(jié)介紹庫(kù)的編譯。?
?
?
執(zhí)行命令“cd /home/miniLinux/Python-2.7.3”進(jìn)入 Python-2.7.3,執(zhí)行命令“vim
setup.py”修改 setup.py。?
?
?
定位到 1024 行,向下找到 1044 行將 paths 改為 install_python 所在路徑,如下圖所
示。?
?
?
?
定位到 1099 行,修改路徑如下圖所示。?
?
?
執(zhí)行命令“./configure --host=arm-none-linux-gnueabi --prefix=/python ”生成符
合交叉編譯器的 Makefile。?
?
?
?
執(zhí)行 make 命令進(jìn)行編譯“make HOSTPYTHON=./hostpython
HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-none-linux-gnueabi-gcc -shared"
CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes”
此時(shí)會(huì)提示缺失模塊,忽略。?
?
?
?
?
?
執(zhí)行以下命令安裝到指定文件夾“make install HOSTPYTHON=./hostpython
BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-nonelinux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=/home/minilinux/Python-
2.7.3/_install”。
其中 prefix=/home/minilinux/Python-2.7.3/_install 是指定的安裝目錄,用戶根據(jù)實(shí)際
情況更改?。
?
?
使用命令“l(fā)s _install”查看結(jié)果:?
?
?
?
拷貝庫(kù)文件“install_python/lib/libsqlite3.so.0”到“/Python-2.7.3/_install/lib/”
下。?
?
?
將_install 目錄整個(gè)打包,拷貝到開(kāi)發(fā)板上的“/data”目錄下,然后解壓,筆者使用的是
最小系統(tǒng)搭建的有 nfs 共享文件,用戶也可以通過(guò) U 盤(pán)拷貝過(guò)去。?
?
?
進(jìn)入_install 目錄,使用命令
“export export LD_LIBRARY_PATH=/data/_install/lib:$LD_LIBRARY_PATH”?
?
?
?
3 運(yùn)行測(cè)試
3.1 庫(kù)功能文件測(cè)試
進(jìn)入_install/bin 目錄下使用命令./python,然后使用 import 加載各模塊如下圖所
示則 python 移植成功。按 ctrl+d 退出。?
?
?
3.2 數(shù)據(jù)庫(kù)測(cè)試
在提供的壓縮包里提供的有 sqlite3 數(shù)據(jù)庫(kù)的例程 sqlite3test.txt,例程解釋如下。?
?
?
?
執(zhí)行命令”./python sqlite3test.txt” 可以看到生成了數(shù)據(jù)庫(kù)文件 test.db 文件。?
?
?
?
?
使用數(shù)據(jù)庫(kù)查看軟件查看到表中寫(xiě)入的數(shù)據(jù)如下。?
?
?
3.3 time 和 datetime 測(cè)試
在提供的壓縮包里提供的有 time 測(cè)試的例程 timetest.txt,通過(guò) U 盤(pán)將測(cè)試?yán)炭截惖?/span>
開(kāi)發(fā)板的/data/_install/bin 下,執(zhí)行命令“./python timetest.txt”可完成時(shí)間格式的轉(zhuǎn)換
和微秒級(jí)時(shí)間差的計(jì)算?
?
4 sqlite3 庫(kù)的移植
和文檔一起有數(shù)據(jù)庫(kù)的壓縮包,也去 sqlite 官網(wǎng)下載最新的數(shù)據(jù)庫(kù),通過(guò) ssh 拷貝到
/home/minilinux 目錄下,使用命令“tar -vxf sqlite-autoconf-3240000.tar.gz ”解壓,
如下圖所示?
?
?
進(jìn)入解壓后生成的文件夾“sqlite-autoconf-3240000”,執(zhí)行命令“./configure --
host=arm-none-linux-gnueabi --prefix=/home/minilinux/sqlite-autoconf-
3240000/install_python --enable-shared”。?
?
?
?
如下圖所示,生成 Makefile 等必要文件,執(zhí)行“make”命令進(jìn)行編譯。?
?
?
執(zhí)行命令“make install”,會(huì)看到在 sqlite-autoconf-3240000 目錄下產(chǎn)生文件夾
install_python,執(zhí)行命令“l(fā)s install_python”可以看到目錄下有:bin include lib 三個(gè)文
件夾。?
?
?
至此 sqlite3 的庫(kù)已經(jīng)編譯完成,用戶需要其他的庫(kù)文件也可以照此編譯。?
轉(zhuǎn)自迅為:http://www.topeetboard.com
?
?
?
?
評(píng)論
查看更多