0. 前言
由于需要在arm-linux開發(fā)板上運(yùn)行Python代碼,但是里面的Linux系統(tǒng)是裁剪過的,沒有包管理工具,所以就下載源碼安裝
1. 下載Python源代碼
到 https://www.python.org/ftp/python/ 上下載與電腦對應(yīng)版本的Python。跟編譯用的電腦上一致蜕青,因?yàn)榫幾g過程中需要調(diào)用到電腦上的Python程序,版本不一致容易出現(xiàn)各種語法的錯(cuò)誤糊渊。
- 編譯中會(huì)用到電腦上面的
python
命令右核,所以要先將Python3鏈接到python
,否則會(huì)出現(xiàn)沒有python這個(gè)編譯器渺绒,如下
checking for python3.9... no
checking for python3... python3
checking for python interpreter for cross build... configure: error: python3.9 interpreter not found
2. 編譯
執(zhí)行下列命令編譯安裝
--prefix
設(shè)置安裝的位置贺喝,便于管理
export CC= {arm-gcc的路徑}
export CXX= {arm-g++的路徑}
./configure --host=arm-linux --build=arm-linux-gnueabihf ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no --disable-ipv6 --prefix=/home/apps/python3
2.1. 編譯中遇到的錯(cuò)誤
- 遇到錯(cuò)誤
configure: error: readelf for the host is required for cross builds
看樣子是缺少readelf這個(gè)文件
在arm-gcc的bin目錄下發(fā)現(xiàn)一個(gè)arm-linux-gnueabihf-readelf
,在此目錄執(zhí)行
ln -s arm-linux-gnueabihf-readelf arm-linux-readelf
遇到錯(cuò)誤
Fatal: You must get working getaddrinfo() function. or you can specify "--disable-ipv6".
因?yàn)橛貌坏絀Pv6宗兼,所以在configure后面加上--disable-ipv6
configure: error: set ac_cv_file__dev_ptmx to yes/no in your CONFIG_SITE file when cross compiling
在configure后面加上ac_cv_file__dev_ptmx=no
即可configure: error: set ac_cv_file__dev_ptc to yes/no in your CONFIG_SITE file when cross compiling
同樣加上ac_cv_file__dev_ptc=no
configure: error: cannot run C compiled programs. If you meant to cross compile, use '--host'.
交叉編譯需要設(shè)置--host
躏鱼、--build
兩個(gè)參數(shù)
3. 安裝
由于安裝過程中并不會(huì)將pip和setuptool放到--prefix
指定的路徑中,而是$HOME/.local
下面殷绍,所以$HOME/.local
下面的bin和lib文件夾先移動(dòng)到別的地方
執(zhí)行make install
把編譯后的Python放到/home/apps/python3
中
復(fù)制/home/apps/python3
和$HOME/.local/bin
染苛、$HOME/.local/lib
到arm板子上面即可使用。