歡迎關注求畢業的博客園原文http://www.cnblogs.com/hit-python/
上一篇博客介紹了:交叉編譯Python至嵌入式arm(支持import sqlite3,datetime等)-----Cross Compiling Python for Embedded Linux
但是后來遺留了一個問題,就是import sqlite3失敗。這篇博客就講講如何交叉編譯產生的python可以成功找到sqlite3
附件:求畢業貢獻給大家的文件
step 1:交叉編譯SQLite3
1.1下載SQLite3(附件有)
1.2 解壓
tar zxf sqlite-amalgamation-3.6.16.tar.gz
1.3 切換路徑
cd sqlite-3.6.16/
1.4 生成Makefile等必要文件(注意:求畢業的交叉編譯器為:arm-xilinx-linux-gnueabi-gcc,以下語句修改成你自己的編譯器名去掉“-gcc”即可)
./configure --host=arm-xilinx-linux-gnueabi --prefix=./install_python--enable-shared --disable-readline --disable-dynamic-extensions
1.5 1.4中生成了Makefile文件,只需Make即可
make
1.6 安裝到./install_python
make install
此時,在./install_python目錄下有:bin include lib三個文件夾,具體功能求畢業就不廢話了。
step 2:編譯sqlite3至python
先請讀者打開上篇博客,並找到第13步
2.1 切換到Python-2.7.3目錄下:
cd <your path>/Python-2.7.3
2.2 修改setup.py
vi setup.py
找到與sqlite相關的內容:
2.2.1 在控制模式下輸入 :/sqlite
2.2.2 回車
2.2.3 直接跳到1024行,然后按字母n (或者上下鍵)找到如圖所示位置:
讀者可以閱讀下紅線部分源碼:目的是為了找sqlite的頭文件 include的路徑
如果不是交叉編譯器,就執行①部分代碼
如果是交叉編譯器,就執行②部分代碼
顯然,我們是交叉編譯器,就會執行代碼②:將上圖內容修改成下圖所示:(修改的方式有很多,下圖只是其中一種)
即設置:本文1.6節中./install_python下include路徑。
2.2.4 找到:
與2.2.3類似,修改成
注意:/home/hadoop/sqlite-3.6.16/install_python是求畢業的sqlite的安裝路徑,請讀者修改成自己的即可
讀者可以從上篇博客中的13步繼續做。
step 3 :驗證
從上篇博客1.7步開始:(此步在ARM板子上運行)
3.1 運行python
./python
import 常用的模塊,沒問題
import sqlite3出錯:ImportError: libsqlite3.so.0: cannot open shared object file: No such file or directory
說找不到動態鏈接庫,原因是:因為沒有設置動態鏈接庫的環境變量
將sqlite3 lib中的libsqlite3.so.0復制到_install_2.7.3/lib下。並設置環境變量
在shell終端運行:
export LD_LIBRARY_PATH=/nfs/_install_2.7.3/lib:$LD_LIBRARY_PATH
(注意:求畢業是通過ARM mount PC端nfs,在遠程運行python
mount -t nfs 192.168.0.21:/nfs /nfs -o nolock
所以export LD_LIBRARY_PATH=/nfs/_install_2.7.3/lib:$LD_LIBRARY_PATH,
讀者應該根據自己的情況自行設置)
再次運行:./python
結束語:其實此方法不僅限於移植SQLite3,移植其他模塊方法是一致的。
轉載請需注明出處