移植Python至ARM(支持import sqlite,datetime) 續


歡迎關注求畢業的博客園原文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,移植其他模塊方法是一致的。

轉載請需注明出處

  

  

   

     


免責聲明!

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



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