移植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