python及第三方庫交叉編譯( 二 )


8、編輯鏈接文件:vim /etc/ld.so.conf.d/libc.conf
9、在libc.conf文件中添加:/usr/openssl-1.0.2g-build/openssl-build/lib
10、重新加載配置:ldconfig
11、測試:openssl version,已經變成1.0.2g版本了

python及第三方庫交叉編譯

文章插圖
八、準備openssl-target1、同樣是再次解壓openssl源碼包 , 這次解壓的源碼包用來交叉編譯給target-python使用的:tar -xzvf openssl-1.0.2g.tar.gz
2、更改名字:mv openssl-1.0.2g openssl-1.0.2g-target
3、cd openssl-1.0.2g-target
4、設置編譯環境:./config no-asm --shared --cross-compile-prefix=arm-buildroot-linux-gnueabihf- --prefix=/home/openssl-1.0.2g-target/openssl-target
解釋: no-asm :加上 no-asm 表示不使用匯編代碼加速編譯,不然會報錯
--cross-compile: 指定交叉編譯鏈的前綴,這樣在交叉編譯openssl就會使用我們的交叉編譯鏈進行交叉編譯了
  --prefix: 已經是交叉編譯后的路徑
5、在編譯后生成的Makefile中有兩處是 -m64 的標記要刪除 , 因為交叉編譯后是在32位的板子上運行 , 所以這一步也要改:sed -i 's/-m64//' Makefile
6、執行編譯安裝:make && make install
目前我們就把openssl-build和openssl-target都準備好了
九、準備zlib-build1、解壓源碼包:unzip zlib1211.zip
2、改名:mv zlib-1.2.11 zlib-1.2.11-build
3、cd zlib-1.2.11-build
4、設置編譯環境:./configure --prefix=/home/zlib-1.2.11-build/zlib-build
5、執行編譯安裝:make && make install
十、準備zlib-target1、解壓源碼包:unzip zlib1211.zip
2、改名:mv zlib-1.2.11 zlib-1.2.11-target
3、cd zlib-1.2.11-target
4、設置交叉編譯器:export CC=arm-buildroot-linux-gnueabihf-gcc 通過export 設置的環境變量都是臨時一次性的,當shell窗口關閉了就失效了
5、設置編譯環境:./configure --prefix=/home/zlib-1.2.11-target/zlib-target --enable-shared
6、執行編譯安裝:make && make install
目前我們也已經包zlib-build和zlib-target準備好了
十一、準備ctypes-build 這一步已經在準備工作中做了:sudo apt-get install libffi-dev
十二、準備ctypes-target1、解壓源碼包:tar -xzvf libffi-3.2.1.tar.gz
2、改名:mv libffi-3.2.1 libffi-3.2.1-target
3、cd libffi-3.2.1-target
4、設置交叉編譯器:export CC=arm-buildroot-linux-gnueabihf-gcc 如果這一步在準備zlib-target沒有關閉shell窗口的時候,可以不用設置,因為已經設置過了,但是如果關了窗口就要重新設置了
5、設置編譯環境:./configure CC=arm-buildroot-linux-gnueabihf-gcc --host=arm-buildroot-linux-gnueabihf --build=x86_64-linux-gnu target=arm-buildroot-linux-gnueabihf --enable-shared --prefix=/home/libffi-3.2.1-target/libffi-target
6、執行編譯安裝:make && make install
【python及第三方庫交叉編譯】目前ctypes-build和ctypes-target也準備好了
十三、編譯python-build1、解壓源碼:tar xvf Python-3.5.2.tgz
2、改名:mv Python-3.5.2 python-3.5.2-build
3、cd /home/python-3.5.2-build
4、修改 Modules/Setup.dist文件:vim Modules/Setup.dist
a、修改關于openssl部分
python及第三方庫交叉編譯

文章插圖
b、修改關于zlib部分
python及第三方庫交叉編譯

文章插圖
5、將之前設置的交叉編譯器改為默認的編譯器:export CC=   這里=后面什么都不賦值就表示設置為空 , 這樣就會去找默認的gcc了
6、設置編譯環境,./configure --prefix=/home/python-build --without-ensurepip
--without-ensurepip:不安裝pip,因為默認安裝的pip版本太低了,所以一會我們自己安裝pip
7、執行安裝編譯:make && make install
8、cd /home/python-build/bin
9、下載pip文件:curl https://bootstrap.pypa.io/pip/3.5/get-pip.py -o get-pip.py -k
10、安裝pip: ./python3 get-pip.py
11、將該python-build添加到環境變量,設置為build主機上默認的python:  export PATH=/home/python-build/bin:$PATH
12、安裝Cython: pip3 install Cython
13、測試:python3
python及第三方庫交叉編譯

文章插圖
十四:編譯python-targer1、解壓源碼包:tar xvf Python-3.5.2.tgz
2、改名:mv Python-3.5.2 python-3.5.2-target
3、cd python-3.5.2-target
4、創建文件夾:mkdir /home/python-target
5、將之前準備的openssl-targer、zlib-targer、cytpes-targer的頭文件和鏈接庫復制到/home/python-targer
cp -rfp /home/zlib-1.2.11-target/zlib-target/* /home/python-target/

推薦閱讀