pythonarm移植
Ⅰ 有沒有大神試過把python解釋器移植到單片機里
可以先一直linux,然後移植python,包括python需要的各種庫!
Ⅱ 求助,現在可行的python電腦端向android端移植的方案
在android上運行python腳本,或者在android上使用python交互界面,對熟悉python的研究或開發人員來說,是一件很有吸引力的事情,因為python腳本真是非常高效,另外,有很多非常好的庫
android官方目前沒有支持在android設備運行python,但是網上有一些項目組做了這個事情 這個鏈接就提供好幾個項目,我稍微嘗試了 Kivy 這種方式, 需要安裝
的東西太多,就放棄了. 推薦 這種方式,使用 qpython 項目, 可以用非常少的付出得到 android 上可以運行的 python 環境.
5 relogin the shell
6. type python in the adb shell
root@generic:/ # python // 我嘗試的時候,直接運行 python (其實是運行 /data/data/com.hipipal.qpyplus/files/bin/python ) 會報錯: error: only position independent executables (PIE) are supported. 我測試的設備是 Nexus 6 , android 6.0 , 在
這些比較新的 android 系統上有保護,需要可執行程序使用 -PIE 進行編譯,否則無法運行. 但我發現同樣的目錄下 python-android5 是可以運行的, 所以就 mv python python.bak ; ln -s python-android5 python ; 這樣後面就可以直接運行 python 了.
Ⅲ 如何交叉編譯Python到ARMLinux平台 / 藍訊
步驟一:部署protoc.exe
1)sudo su ---進入管理模式
//以下操作切換至protobuf文件夾下
2)。/configure
3)make
4)make check
5)make install
此時可以查看protobuf文件夾下面的makefile文件,可以查看-build表示的本機環境以及-host表示的編譯庫的運行環境
我本地的-build=x86_64-apple-darwin12.3.0
-host=x86_64-apple-darwin12.3.0
(這兩個參數在後續配置腳本需要用到,與後面腳步的i686-apple-darwin12.3.0以及arm-apple-darwin12.3.0後綴「arm-apple-darwin12.3.0」保持一致)
6)make distclean清理已生成的makefile,為交叉編譯配置新makefile做准備
Ⅳ arm可以用python編程嗎
不可以吧,沒聽說過這種應用。python語言是高級語言,是面向對象的,比較復雜。像arm這種操作寄存器的,一般用C語言比較低級的語言操作硬體。你想再arm上應用python語言寫的應用程序,必須是在arm上加了系統,然後這個操作系統可以解析python語言(裝解析軟體。)。
Ⅳ 有哪位大神嵌入式ARM中移植python的庫,求助啊
我沒弄過ubuntu下的graphics.py。
但是弄過windows下的。
1. apt是用來安裝Ubuntu系統的軟體的。
2. Python是Ubuntu下面的一個軟體。
3. 而graphics.py屬於python中的第三方庫函數。
所以,即使用apt,也是用apt去安裝,更新python。
而python中的庫,有自己的安裝方法。
常見的是直接 setup.py install或者用pip之類的去安裝。
具體安裝的方法,自己去參考這個:
【待完善】【總結】Python安裝第三方的庫、package的方法
(此處不給貼地址,請用搜標題,即可找到帖子地址)
Ⅵ 如何交叉編譯Python到ARM-Linux平台
平時編譯python用的gcc,你裝個交叉編譯環境,把編譯器改成arm-linux-gcc編譯出來的就是arm版本的
Ⅶ 如何交叉編譯Python到ARM-Linux平台
編譯sqlite
先去 http://www.sqlite.org/download.html 下載最新的sqlite源代碼,我這里用的是3.5.6版本的。
我推薦使用amalgamation版本的源代碼,這個代碼只有幾個文件而已,編譯起來方便,而且據說 編譯器好的話,還可能編譯出更高效的代碼。 我下載的是
[plain]
view plain
http://www.sqlite.org/sqlite-amalgamation-3.5.6.tar.gz
先運行以下幾步:
[plain]
view plain
tar zxf sqlite-amalgamation-3.5.6.tar.gz
cd sqlite-3.5.6
./configure --host=arm-linux --prefix=/usr/local/arm/3.3.2 --enable-shared --disable-readline --disable-dynamic-extensions
以上是把sqlite解壓縮,然後做一些配置,這里,我希望sqlite到時候安裝到/usr/local/arm/3.3.2里,要生成動態鏈接庫,不要readline,不要sqlite的動態擴展。
然後編輯Makefile,把CFLAG和CXXFLAG中的-g去掉,我們不用debug sqlite。
接下來就可以編譯和安裝sqlite了:
[plain]
view plain
make
make install
這一步就完成了sqlite的編譯和安裝了。
編譯python
先去http://www.python.org/download/下載最新版本的python源代碼,我這里下載的是:
[plain]
view plain
http://www.python.org/ftp/python/2.5.1/Python-2.5.1.tar.bz2
先把python解壓縮:
[plain]
view plain
tar jxf Python-2.5.1.tar.bz2
cd Python-2.5.1
編譯pc版本的語法解析器
由於在編譯python的時候,需要先編譯一個叫pgen的程序出來,用於生成語法解析器,所以我們要先生成一個pc版本的pgen:
[plain]
view plain
mkdir build.pc
cd build.pc
../configure
make Parser/pgen
然後ls Parser一下,應該就能看到有pgen了。
修改configure
configure在檢測編譯器的printf是否支持%zd的時候,如果發現是在cross compile,就直接不幹活了。這還了得?
把這一部分的檢測代碼去掉。這段代碼起始於
[plain]
view plain
echo "$as_me:$LINENO: checking for %zd printf() format support" >&5
echo $ECHO_N "checking for %zd printf() format support... $ECHO_C" >&6
if test "$cross_compiling" = yes; then
結束於
[plain]
view plain
cat >>confdefs.h <<\_ACEOF
#define PY_FORMAT_SIZE_T "z"
_ACEOF
else
echo "$as_me: program exited with status $ac_status" >&5
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
把這兩段以及中間的內容都刪除掉就可以了。
編譯arm版本的python
有了語法解析器,就可以開始編譯arm版本的python了。
[plain]
view plain
mkdir ../build.arm
cd ../build.arm
../configure --prefix=/home/leojay/test/arm-system-working/rootfs --disable-ipv6 --host=arm-linux --enable-shared
先創建一個用於編譯的目錄build.arm,再對python做一些配置,如安裝目錄,不要ipv6,使用arm-linux的編譯器,生成動態鏈接庫。
修改Makefile
之後就要對Makefile做一些修改,把
[plain]
view plain
OPT= -DNDEBUG -g -O3 -Wall -Wstrict-prototypes
一行中,去掉-g,我們不要debug python,-O3改為-O2,空間緊張O2就可以了。
在
[plain]
view plain
PGEN= Parser/pgen$(EXE)
一行的下面加上
[plain]
view plain
PGEN_HOST= ../build.pc/Parser/pgen$(EXE)
表明我們在HOST上運行的pgen
在要使用PGEN的地方改為PGEN_HOST:
[plain]
view plain
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
-$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
改為:
[plain]
view plain
$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
-$(PGEN_HOST) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
修改所有使用新生成的python的地方。
所有如 ./$(BUILDPYTHON) 的地方,都改為python
如:
[plain]
view plain
platform: $(BUILDPYTHON)
$(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
改為
[plain]
view plain
platform: $(BUILDPYTHON)
$(RUNSHARED) python -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
這種地方比較多,大家小心修改。
修改setup.py
setup.py負責編譯python的各個擴展模塊。但是,由於python完全沒有考慮cross compile,所以要做一些修改。
PyBuildExt類:
函數的前兩行是把/usr/local加到搜索目錄中,我們的cross compiler一般不會直接安裝在 /usr/local裡面的,所以這兩行去掉:
[plain]
view plain
lib_dirs, inc_dirs的設定中,把中括弧里的那些都去掉。 以下所有模塊都不要:
這個函數在編譯了所有的extension後,會去load這些剛編譯好的extension, 但我們在i686的電腦上顯然不能load,所以要跳過這些操作。 在 build_ext.build_extension(self, ext)後面直接寫一個return,不做load。
for d in ['/usr/local/arm/3.3.2/include']
for d in inc_dirs + sqlite_inc_paths:
ssl, openssl, bdb, dbm, termios, nsl, ncurses, bz2, linuxaudiodev, ossaudiodev, tkinter
add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
build_extension函數:
detect_moles函數:
cmath, ctypes, _testcapi, pwd, grp, spwd, mmap, audioop, imageop, rgbimg, readline,
[plain]
view plain
由於python本身的問題,現在ctypes還不能在除i386以外的機器上運行,所以ctypes也去掉 編譯sqlite的地方:
[plain]
view plain
改為:
[plain]
view plain
因為我的sqlite3安裝在這里,如果這里不改的話,setup.py會在我的電腦上找sqlite
main函數:
setup函數調用的時候,把要安裝的scripts那一部分去掉
之後就可以make && make install了。
附上我修改後的 Makefile 和 setup.py 供大家參考
裁減python
python完全安裝後,實在是很大,所以,要把一些肯定用不上的庫去掉。 所以,再附上我的裁減腳本 cleanpy.sh
注意,由於我的python程序都運行在python -OO的參數下,所有的.py和.pyc都不需要, 只要有.pyo就可以了。所以,這個腳本會把所有的.py和.pyc都刪除掉。
大家可以根據自己的需要做調整。
Ⅷ 塞班的python與安卓的python有何區別,能把塞班的python程序移植到安卓嗎
python解釋器本身用c/c++實現的,所以對於語言的核心部分,塞班的python與安卓的python是一樣的,但是因為運行的操作系統不同,所以對應系統提供的專有的庫肯定是不同的(例如創建界面環境的庫),如果是十分依賴系統的庫也應該是有差距的。
塞班的python程序不帶界面的移植比較容易,但是帶界面的移植也不能說完全不可能,但是難度肯定是非常大的。
Ⅸ python 移植到 arm 需要什麼條件
如果arm下面的平台是Linux,那麼可以直接安裝。不過如果你需要通過python操作底層硬體,那麼你需要自己編寫一個模塊去實現
如果arm下面是別的操作系統,或者是裸機,那麼需要把python源代碼重新進行編譯,使用方法需要根據你的軟體進行結合,這會比較麻煩