Python3.7版本移植到arm平台


1.下載對應的python版本,本文中是3.7.4版本

2.使用x86 gcc編譯並編譯,並安裝,命令如下
./configure --prefix=/usr/local/python3.7
make
make install
如提示缺少組件,請對應安裝。

3.make distclean 清空設置

4.將Python3.7.4的路徑添加到profile中:PATH=/usr/local/python3.7/bin/:$PATH

5.交叉編譯必要的第三方庫,這里遇到的問題是libffi.so,參照一般第三方庫的編譯步驟即可。

6.交叉編譯Python,以hi3519a平台為例:
CC=arm-himix200-linux-v2-gcc CXX=arm-himix200-linux-v2-g++ AR=arm-himix200-linux-v2-ar RANLIB=arm-himix200-linux-v2-ranlib READELF=arm-himix200-linux-v2-readelf ./configure --host=arm-linux --build=x86_64-linux-gnu --prefix=$PWD/../INSTALL --disable-ipv6 ac_cv_file__dev_ptmx="no" ac_cv_file__dev_ptc="no"
make
make install

需要注意的是,要觀察一下最后的結果輸出:
Failed to build these modules:
_ctypes
按上述步驟,_ctypes這個模塊沒有編譯出來,但整個編譯是成功的,並沒有顯式的提示(如中斷編譯,小小地吐槽一下。因為這個問題,導致我們在上板運行Python時,_ctype模塊無法導入,定位了半天時間才找到這里)。
解決辦法如下:
將第5步中編譯出來的libffi.so和頭文件放到交叉編譯工具鏈對應的目錄下,
參考編譯中的打印:
arm-himix200-linux-v2-gcc -shared build/temp.linux-arm-3.7/home/amba/21819/Python-3.7.4/Modules/xxlimited.o -L/usr/local/arm-himix200-linux-v2/target/usr/lib -L/usr/local/arm-himix200-linux-v2/target/lib -L/usr/local/arm-himix200-linux-v2/arm-linux-gnueabi/lib -L/usr/local/arm-himix200-linux-v2/lib/gcc -o build/lib.linux-arm-3.7/xxlimited.cpython-37m-arm-linux-gnueabi.so
INFO: Could not locate ffi libs and/or headers
然后重新make & make install

7.使用tar命令將INSTALL目錄打包上傳到設備,並使用tar解壓(這樣不會丟失軟鏈接)
這里解壓到/mnt/appdata/INSTALL目錄

8.重新打包設備程序,修改romf/etc/profile,添加
PYTHONHOME="/mnt/appdata/INSTALL"
export PYTHONHOME
導出python路徑
LD_LIBRARY_PATH 添加libfii.so在設備上的目錄
打包並升級到設備

9./mnt/appdata/INSTALL/bin: ./python3.7
Python 3.7.4 (default, Mar 14 2020, 14:49:05)
[GCC 6.3.0] on linux


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM