學習Python已經有些念頭,不過一直都是在PC上面編程,現在正好有項目需要在ARM中使用Pyhon,可以將Python發揚光大。以下記錄交叉編譯與移植的具體步驟。
首先在https://www.python.org下載Pyhon3.4.3的源碼
1、此編譯環境是,Ubuntu 14.04 交叉編譯版本採用的是arm-linux-gnueabihf 4.7版本
2、mkdir ~/work
cd ~/work
下載代碼後解壓縮 tar xvf Python-3.4.3.tgz
3、編輯Modules/Setup檔案,將其中需要整合的內部模組注釋去掉
我主要保留了_csv,posix,errno,pwd,_sre,_codecs,_weakref,_functools,_operator,_collections,itertools,atexit,_stat,_locale,_io,zipimport,faulthandler,_tracemalloc,_symtable,array,cmath,math,_struct,time,_weakref,_random,_pickle,_datetime,_bisect,_heapq,_csv,_socket,_md5,_sha1,_sha256,_sha512,binascii,parser,_multibytecodec,_codecs_cn
首先要交叉編譯zlib,如何編譯可以參考google,再將libz.a , zconf.h , zlib.h拷貝到arm編譯起的lib目錄與include目錄(此方法不合適,肯定有更合適的)
4、echo ac_cv_file__dev_ptmx=no > config.site
echo ac_cv_file__dev_ptc=no >> config.site
export CONFIG_SITE=config.site
./configure CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ AR=arm-linux-gnueabihf-ar RANLIB=arm-linux-gnueabihf-ranlib LDFLAGS=-lrt --host=arm-linux-gnueabihf --build=armv7 -disable-ipv6 --without-ensurepip --enable-loadable-sqlite-extensions --prefix=/home/xxxx/Python3.4/python34
make python
5、需要修改sudo chmod 660 /etc/sudoers
sudo vim.tiny /etc/sudoers
在Defaults路徑下面增加交叉編譯器的路徑,原因是在編譯時間編譯器會自動調用sudo sh命令,結果會提示無法找到arm-linux-gnueabihf-ranlib命令:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/sungrow/arm-linux-gnueabihf-4.7-20130415/bin"
6、運行安裝命令
make install
7、打包將軟體包拷貝到嵌入式目標板上解壓縮
tar -jcvf python34.tar.bz2 python34
以下為目標板的控制台操作
cd ~/
wget -c ftp://x.x.x.x/python34.tar.bz2
tar -xvf python34.tar.bz2
export PYTHONHOME=/home/xxxx/python34
export PYTHONPATH=/home/xxxx/python34/Lib
編譯成功,已經在目標板上驗證通過