python 交叉編譯到ARM

2021-09-26 04:38:53 字數 2207 閱讀 1089

1.交叉編譯需要,先編譯pc版python 再編譯arm出來,用於生成語法解析器

./configure

make parser/pgen

2. 配置 和編譯

export cc=arm-openwrt-linux-gcc

./configure --host=arm-openwrt-linux --prefix=/home/fs/my_work/python-3.7.4/python3.7_arm --enable-shared --disable-ipv6 --build=i686

--build=i686 : i686為ubuntu編譯環境

--host=arm-openwrt-linux:arm-openwrt-linux 交叉編譯器名稱

3.修改setup.py

detect_modules函式:

函式的前兩行是把/usr/local加到搜尋目錄中,我們的cross compiler一般不會直接安裝在 /usr/local裡面的,所以這兩行去掉:

add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')

add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')

4.之後就要對makefile做一些修改:

(1)把

opt= -dndebug -g -fwrapv -o3 -wall -wstrict-prototypes

一行中,去掉-g,我們不要debug python,-o3改為-o2,空間緊張o2就可以了。

執行 make編譯

make
5.. make 會出現錯誤

include/pyport.h:243: error: #error "this platform's pyconfig.h needs to define py_format_long_long"

修改pyconfig.h: 找到#undef py_format_long_long 處加:#define py_format_long_long "ll"

make test

make install

6. 此時在開發板上./python可以執行。

7.設定環境變數

設定python執行檔案copy到板子上/bin 目錄下,對應庫copy到板子上/lib下即可

以下為編譯遇到的其它問題,僅供參考:

問題一:

configure: error: set ac_cv_file__dev_ptmx to yes/no in your config_site file when cross compiling the workaround:

1. create config.site file with the following lines

ac_cv_file__dev_ptmx=no

ac_cv_file__dev_ptc=no

2. run configure script as: config_site=config.site ./configure --host..

或者

export config_site=config.site

./configure --host..

問題二:

mips-openwrt-linux-uclibc-g++.bin: environment variable "staging_dir" not defined

然後把staging_dir加入到環境變數中就可以了。

export staging_dir=~/downloads/openwrt-sdk-atheros-for-linux-i686-gcc-4.3.3+cs_uclibc-0.9.30.1/staging_dir/toolchain-mips_gcc-4.3.3+cs_uclibc-0.9.30.1/bin:$staging_dir

交叉編譯libparted到arm

libparted版本為parted 3.0,libuuid版本為libuuid.1.0.3 1.交叉編譯libuud 編譯配置選項 configure host arm none linux gnueabi prefix usr local uuid arm 注 安裝路徑為本人自行建立並指定,編譯...

交叉編譯GDB到ARM板

原文 sudo apt get install texinfo sudo apt get install libncurses5 dev sudo apt get install m4 sudo apt get install flex sudo apt get install bison 為了支援...

交叉編譯 ARM

交叉編譯 是在乙個平台上生成另乙個平台上的可執行 編譯 例 c51的交叉編譯發生在keil 整合環境上面 linux上面編寫樹莓派的 並編譯成可執行的 如 out,在樹莓派上執行 目的平台上不允許或不能夠安裝我們所需要的編譯器 1 目的平台上的資源貧乏,無法執行我們所需要編譯器 2 目的平台還沒有建...