sqlite3移植到ARM SQLITE3.7.14

本文详细介绍了如何将SQLite3.7.14从源码编译并移植到ARM系统的过程,包括下载源码、解压、修改configure文件、编译、安装以及使用strip工具减少执行文件大小。最后,将编译好的库文件和可执行文件复制到ARM设备的相应目录中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载源码


得到sqlite-autoconf-3071400.tar.gz文件

2.解压源码包到root下

我用的鼠标右键解压
root下就有了 sqlite-autoconf-3071400 这个文件夹
进入文件夹
# cd /root/sqlite-autoconf-3071400
并在  sqlite-autoconf-3071400  目录下建立sqlite-arm-linux目录
#mkdir  sqlite-arm-linux

3. 备份configure文件 

#cp configure configure.old 

4. 修改configure文件

# ./configure --host=arm-linux --disable-tcl --prefix=/root/sqlite-autoconf-3071400/sqlite-arm-linux/

5.编译

make
遇到错误,如下:

/bin/bash ./libtool --tag=CC --mode=compile arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.7.14\" -DPACKAGE_STRING=\"sqlite\ 3.7.14\" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.7.14\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -DHAVE_STRERROR_R=1 -DHAVE_POSIX_FALLOCATE=1 -I.@am__isrc@ -D_REENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c -o sqlite3.lo sqlite3.c mkdir .libs arm-linux-gcc -DPACKAGE_NAME=\"sqlite\" -DPACKAGE_TARNAME=\"sqlite\" -DPACKAGE_VERSION=\"3.7.14\" "-DPACKAGE_STRING=\"sqlite 3.7.14\"" -DPACKAGE_BUGREPORT=\"http://www.sqlite.org\" -DPACKAGE_URL=\"\" -DPACKAGE=\"sqlite\" -DVERSION=\"3.7.14\" -D_FILE_OFFSET_BITS=64 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_FDATASYNC=1 -DHAVE_USLEEP=1 -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_DECL_STRERROR_R=1 -DHAVE_STRERROR_R=1 -DHAVE_POSIX_FALLOCATE=1 -I.@am__isrc@ -D_REENTRANT=1 -DSQLITE_THREADSAFE=1 -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE -g -O2 -MT sqlite3.lo -MD -MP -MF .deps/sqlite3.Tpo -c sqlite3.c -fPIC -DPIC -o .libs/sqlite3.o arm-none-linux-gnueabi-gcc: 3.7.14": No such file or directory <command-line>: warning: missing terminating " character make: *** [sqlite3.lo] 错误 1


解决办法:
将Makefile文件中的-DPACKAGE_STRING=\"sqlite\  3.7.14\"改为-DPACKAGE_STRING=\"sqlite_3.7.14\"后,问题解决,编译顺利通过,猜想这个错误可能是交叉编译器对Makefile的解析能力有限造成的

6.安装

# make install

为了减小执行文件大小可以用strip处理,去掉其中的调试信息:

#cd  /root/sqlite-autoconf-3071400/sqlite-arm-linux/lib

#arm-linux-strip  libsqlite3.so.0.8.6


7.将库文件移植到ARM上

生成了结果文件,现在要把东西弄到ARM上去

将PC上/root/sqlite-autoconf-3071400/sqlite-arm-linux/lib下的libsqlite3.so  libsqlite3.so.0  libsqlite3.so.0.8.6放到ARM文件系统的/lib目录下

将PC上/root/sqlite-autoconf-3071400/sqlite-arm-linux/bin下的sqlite3放到ARM文件系统的/sbin目录下

设置环境?

以下内容引用自参考资料

移植到开发板

         开发板和pc使用nfs通信,pc目录是/home/lf/nfs,开发板目录是/mnt/nfs

         首先,将sqlite所用的库拷贝到/home/lf/nfs/中:

                                                    cd    ../lib

                                                    cp    -arf  libsqlite3.so  libsqlite3.so.0  libsqlite3.so.0.8.6  /home/lf/nfs

ps 拷贝是需要加上–arf选项,因为libsqlite3.solibsqlite3.so.0是链接到libsqlite3.so.0.8.6

    再把数据库的执行文件sqlite3拷贝到共享目录中:

                              cd  ../bin

                              cp  sqlite3 /home/lf/nfs

    接下来,在开发板的shell终端中,将他们分别拷贝到开发板的相应目录:

                              cd   /mnt/nfs

                              cp    -arf  libsqlite3.so  libsqlite3.so.0  libsqlite3.so.0.8.6  /lib

                                                    cp     sqlite3  /bin

  初步测试成功~

以下内容引用自参考资料

在开发板终端中将三个库文件拷贝到其库中,而后即可使用sqlite了。

  但要提醒一点的就是,sqliteMySQL....有点不一样哟.. 我刚开始玩的时候首先就输入了show databases;结果让我很揪心,所以在大家用sqlite之前还是建议先学好用法. 我相信你会在嵌入式数据库中玩的很high的....


8.sqlite操作



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值