SQLite3移植到ARM Linux教程

应用移植 8445浏览 10评论

SQLite 是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用,SQLite它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

sqlite

sqlite

SQLite 能够支持Windows、Linux、Unix、Android等主流的操作系统,同时能够跟很多程序语言相结合,如C、C++、 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起MySQL、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

1 下载 SQLite3源码

SQLite3 地址:http://www.sqlite.org/download.html。 选择最新稳定版本的Source Code,如 sqlite-autoconf-3080600.tar.gz,就是SQLite 3.8.6版。

2 复制并解压源码包

本文以SQLite 3.8.6为例,先把下载的源码复制到主机(以 Ubuntu 为例),再进行解压。

$ cd
$ mkdir sqlite3                                      #在主机(如Ubuntu)创建工作目录
$ cd sqlite3                                         #进入工作目录中
$ cp /media/sda1/sqlite-autoconf-3080600.tar.gz ./   #复制SQLite源码到主机
$ tar zxvf sqlite-autoconf-3080600.tar.gz            #解压
$ cd sqlite-autoconf-3080600                         #进入解压后的目录

3、配置编译选项

$ mkdir ../install                                   #创建安装目录
$ export PATH=$PATH:/usr/local/arm-2010q1/bin        #交叉编译工具路径加入系统环境变量,必须!
$ ./configure --host=arm-none-linux-gnueabi --prefix=/home/veryarm/sqlite3/install

其中,

  • --host: 指定交叉编译工具,一般为arm-none-linux-gnueabiarm-linux-gnueabihfarm-linux等,具体要和目标板用的交叉编译工具对应。
  • --prefix: 指定安装目录,编译后的文件会全部放在安装目录中。注意:必须是绝对路径!

4 编译

$ make
$ make install

5 去除调试信息

使用交叉编译工具 strip 去除 sqlite3 的调试信息。

$ cd ../install/bin
$ arm-none-linux-gnueabi-strip sqlite3

压缩动态库 libsqlite3.so.0.8.6 文件。

$ cd ../lib
$ arm-none-linux-gnueabi-strip libsqlite3.so.0.8.6

6 复制文件

通过sftp、nfs或者U盘等方式,将 sqlite3 复制到目标板 /usr/sbin 目录,将动态库文件 libsqlite3.so.0.8.6 复制到目标板 /usr/lib 目录,并对动态库做链接。

$ cp sqlite3 /usr/sbin
$ cp libsqlite3.so.0.8.6 /usr/lib
$ cd /usr/lib
$ ln -s libsqlite3.so.0.8.6 libsqlite3.so.0
$ ln -s libsqlite3.so.0.8.6 libsqlite3.so

7 运行测试sqlite3

在开发板上执行 sqlite3 命令,看到如下信息说明 sqlite3 移植成功!

# sqlite3
SQLite version 3.8.5 2014-06-04 14:06:34
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>

使用 .help 查看帮助,使用 .quit 退出 sqlite 命令。

附 镜像下载

Sqlite3.8.6 使用 arm-none-linux-gnueabi-gcc 和 arm-linux-gnueabihf-gcc 所有版本编译后的下载地址:http://pan.baidu.com/s/1jG9RK26

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (10)

  1. 我喜欢评论。
    乐心湖 3年前 (2014-08-16) 回复 编辑
  2. 很精彩,支持下。
    鸿念网 3年前 (2014-08-17) 回复 编辑
  3. 思路很清晰,按照步骤,成功移植sqlite3
    五阿哥 2年前 (2014-10-25) 回复 编辑
  4. 写的很赞!
    褪色的天空 2年前 (2015-02-03) 回复 编辑
  5. 董浩然 2年前 (2015-04-22) 回复 编辑
  6. 按照步骤,成功移植sqlit3,赞
    森林 1年前 (2015-09-23) 回复 编辑
  7. 这个可以回,这个真得回!
    周诗雅 1年前 (2015-12-16) 回复 编辑
  8. [email protected]:/home/ctools/sqlite3/install/bin# which arm-none-linux-gnueabi-gcc
    /home/ctools/arm-2014.05/bin/arm-none-linux-gnueabi-gcc
    
    ./configure --host=arm-none-linux-gnueabi --prefix=/home/ctools/sqlite3/install/
    
    make
    
    make install
    
    [email protected]:/home/ctools/sqlite3/install# ls
    bin  include  lib  share
    [email protected]:/home/ctools/sqlite3/install# pwd
    /home/ctools/sqlite3/install
    
    [email protected]:/home/ctools/sqlite3/install# cd bin/
    [email protected]:/home/ctools/sqlite3/install/bin# ls
    sqlite3
    [email protected]:/home/ctools/sqlite3/install/bin# file sqlite3 
    sqlite3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x09d28e2f8a4da1e70b8780d1923dd4de4dc493d9, not stripped
    为什么我用arm-none-linux 编译后生成的sqlite3文件还是 X86格式的呢? 不是ARM格式的
    mastermouse 2个月前 (01-10) 回复 编辑
    • 少了这一步:export PATH=$PATH:/usr/local/arm-2010q1/bin
      Gooder 1个月前 (01-13) 回复 编辑
      • 感谢,已经解决
        mastermouse 1个月前 (01-13) 回复 编辑