欢迎关注求毕业的博客园原文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,移植其他模块方法是一致的。
转载请需注明出处