以下是本人的工作目录,可根据自己的情况进行调整。
1.交叉编译环境建立:用于交叉编译sqlite
安装cross-2.95.3.tar.bz2交叉编译工具到/usr/local/arm目录下。
解压sqlite-3.3.8到/usr/localsqlite-arm/sqlite-3.3.8,并创建文件夹
cd /usr/localsqlite-arm/sqlite-3.3.8
mkdir sqlite-arm-linux(此文件夹路径可自定)
2.vi configure进行修改,或者通过gedit来打开此文件
20420行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
20446行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
接下就可以执行./configure --disable-tcl --prefix=/usr/local/sqlite-arm/sqlite-plant/ --host=arm-linux
configure: error: unable to find a compiler for building build tools
前面检查arm-linux-gcc都通过了,怎么还说没有找到编译器呢?花了点时间看configure的脚本,太复杂了,又结合configure.ac看了一下。原来是要设置config_TARGET_CC和config_BUILD_CC两个环境变量。config_TARGET_CC是交叉编译器,config_BUILD_CC是主机编译器。
重来:
[root@linux sqlite-3.3.4]# export config_BUILD_CC=gcc
[root@linux sqlite-3.3.4]# export config_TARGET_CC=arm-linux-gcc
再编译一次,这下就正常了
./configure --disable-tcl --prefix=/usr/local/sqlite-arm/sqlite-plant/ --host=arm-linux
make
make install
然后就可以在
/usr/local/sqlite-arm/sqlite-plant/
目录下面看到三个文件夹,bin lib include,这就是我们需要移植到开发板上的文件最好
库文件已经生成在为了减小执行文件大小可以用strip处理,去掉其中的调试信息。
arm-linux-strip libsqlit3.so.0.8.6
arm-linux-strip sqlite3
移植
需要注意:
拷贝是需要加上 –arf选项,因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的。
cd /usr/local/sqlite-arm/sqlite-plant/lib
cp –arf libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6 /sqlite-for-plant
cd /usr/local/sqlite-arm/sqlite-plant/bin
cp sqlite3 /sqlite-for-plant
我是将要移植的文件都放到了sqlite-for-plant下面了,这里可根据自己情况。
然后把sqlite3和lib下的库文件移植到ARM上
在ARM板上运行sqlite
将qlite3文件下载到你的arm板上,
方法很多,你需要根据自己的情况来选择。如ftp,nfs,串口等。 好,开始运行
chmod +wx sqlite
[[email protected]]# ./sqlite3 zieckey.db
./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory
这里是因为刚刚编译时编译的是动态连接库形式的,所有我们还的将库文件下载到ARM板上。
将 /usr/local/arm-linux/sqlite-arm-linux/lib 目录下所有文件下到ARM板上。 再次运行,
[[email protected]]# ./sqlite3 zieckey.db
./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory
还是出错,哦,我们没有设置环境变量,
我是通过nfs挂载到开发板的,要移植的文件都挂载到/etc下目录sqlite-for-plant里面了
假设我们下在库文件在ARM板上的 /etc下的目录sqlite-for-plant里面,
这里设置环境就像下面:
[[email protected]]# export LD_LIBRARY_PATH=/etc/sqlite-for-plant:$LD_LIBRARY_PATH 好了这样就可以运行了:
[[email protected]]# ./sqlite3
SQLite version 3.3.8
Enter ".help" for instructions
sqlite>
ok ,这就成功了。