S3C2410下嵌入式数据库SQLite的移植

对SQLite-3.3.8(或者SQLite3.3.12)进行交叉编译,并移植到ARMS3C2410的过程:
    要将SQLite3.3.8(或者SQLite-3.3.12)移植到ARM2410开发板上,除了要有底层操作系统的支持外,还必须要有相应的交叉编译 工具链。由于ARM2410开发板采用的是ARM-Linux作为底层操作系统,因此需要首先安装ARM-Linux工具链。
   1.交叉编译环境建立:
       安装cross-2.95.3.tar.bz2交叉编译工具到/usr/arm-linux目录下。
          
       解压sqlite-3.3.8到/home/sqlite-3.3.8,并创建文件夹
              cd /home/sqlite-3.3.8
              mkdir sqlite-arm-linux
   2、修改/home/sqlite-3.3.8目录下的configure文件的部分内容
      这样可以让configure不去检查你的交叉编译环境,否则会出现如下同样的错误
      checking for /usr/include/readline.h... configure: error: cannot check for file existence when cross compiling,将不能生成Makefile文件.
          20420行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
          20446行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
         cd /home/sqlite-3.3.8/sqlite-arm-linux
         ../configure --disable-tcl --prefix=/home/sqlite-arm-linux/ --host=arm-linux
         生成了Makefile文件,这些将在make时用到.
    3、将Makefile文件中如下语句
            BCC = arm-linux-gcc -g -O2
            改成:
            BCC = gcc -g -O2
    4、设置交叉编译环境
              export PATH=/usr/arm-linux/arm/2.95.3/arm-linux/bin:$PATH
       
      设置config_TARGET_CC和config_BUILD_CC两个环境变量。config_TARGET_CC是交叉编译器,config_BUILD_CC是主机编译器:
              export config_BUILD_CC=gcc
              export config_TARGET_CC=arm-linux-gcc 
    5、编译并安装
            make && make install
           这里如果不出意外,将不会出现错误,那么库文件已经生成在
           /home/sqlite-3.3.8/sqlite-arm-linux/lib目录下,
           库文件已经生成在为了减小执行文件大小可以用strip处理,去掉其中的调试信息。
           arm-linux-strip libsqlit3.so.0.8.6
           file sqlite3
           sqlite3: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
       由此可知,此时生成的sqlite文件是还未strip过的。执行命令arm-linux-strip, 去掉其中的调试信息,这样文件将减少很多。(这一步不知道为什么我实现不了,但是不影响软件使用)
           arm-linux-strip sqlite3
      再次用file命令查看sqlite3的信息:
         file sqlite3
         sqlite3: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), stripped
这就是在开发板上可以直接运行的可执行文件。
    6、移植
      需要注意:
      拷贝是需要加上 –arf选项,因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的。
       cd /home/sqlite-3.3.8/sqlite-arm-linux/lib
       cp –arf libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6 /usr/qt-sqlite/lib
       cd /home/sqlite-3.3.8/bin
       cp     sqlite3 /usr/qt-sqlite
       然后把sqlite3和lib下的库文件移植到ARM上
    7、在ARM板上运行sqlite
       将qlite3文件下载到你的arm板上, 
       方法很多,你需要根据自己的情况来选择。如ftp,nfs,串口等。 好,开始运行
       chmod +wx sqlite
       [root@51Board var]# ./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板上。 再次运行,
       [root@51Board var]# ./sqlite3 zieckey.db
       ./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory
       还是出错,哦,我们没有设置环境变量,
       假设我们下在库文件在ARM板上的 /usr/qpe/lib/ 目录下,这里设置环境就像下面:
       [root@51Board var]# export LD_LIBRARY_PATH=/usr/qpe/lib:$LD_LIBRARY_PATH 好了这样就可以运行了:
       [root@51Board var]# ./sqlite3
       SQLite version 3.3.8
       Enter ".help" for instructions
       sqlite>
       看见
       sqlite>
       提示符号没有?成功了。哈哈!!
       打个“.help”来看看命令先:-)
       sqlite>.help
       好了。现在sqlite已经在arm-linux下跑了起来。如何,感觉很high吧。
 
 
 
下面装载几篇关于sqlite移植的文章,可以参考:
 
sqlite-3.6.1在uclinux上的移植:
1、 下载源码
    $ mkdir -p ~/arm/source/sqlite/
    $ cd ~/arm/source/sqlite/
    $ wget -c http://www.sqlite.org/sqlite-3.6.1.tar.gz
2、 编译安装
    1)编译安装前注意设置交叉编译器的路径,我的是在.bashrc中加上:
    export PATH=$PATH:/usr/local/arm/3.4.1/bin
    2) 记得先安装一下readline库,否则在sqlite3的命令行中不能使用shell的
    history等功能. 其实这只对pc机上的linux有用(只需sudo apt-get install
    libreadline5-dev 就行了),但是对于交叉编译的arm-linux 却没有
    readline库,要移植readline库(我的这一步并不成功,不知道是什么原因):
    $ wget -c ftp://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz
    $ tar zxf readline-5.2.tar.gz
    $ cd readline-5.2/
    $ ./configure --host=arm-linux --prefix=$(pwd)/_install
    $ make
    $ make install

    3) 编译安装sqlite
    $ tar zxvf sqlite-3.6.1.tar.gz
    $ cd sqlite-3.6.1/
    $ ./configure --host=arm-linux --prefix=$(pwd)/_install
        --disable-tcl --with-readline-lib=/home/itlanger/
        /arm/source/sqlite/readline-5.2/_install/lib
    $ make
    $ make install
    编译安装成功后,会在_install目录下安装三个目录: bin, include 和 lib
3、安装
    1) strip一下动态库
    $ cd sqlite-3.6.1/_install/lib
    $ arm-linux-strip libsqlite3.so.0.8.6
    这样就将libsqlite3.so.0.8.6从原来的1M多减少到300多k!
    2) 将sqlite-3.6.1/_install/lib/* copy到目标板的/usr/lib目录下
    $ cp -rP _install/lib/* ~/work/ ##这里work是我的nfs目录
   
    3)将sqlite-3.6.1/_install/bin/sqlite3 copy到目标板的/usr/bin目录下
    4)将 readline-5.2/lib/*  copy到目标板子的/usr/lib目录下
   
4、测试
    1) 转到目标板上运行sqlite3, 没问题吧.
    2) 写个小程序测试一下,假设为test.c
    3) 程序的编译:
    $ arm-linux-gcc -o test test.c -L/home/itlanger/arm/source//
      sqlite/sqlite-3.6.1/_install/lib -I/home/itlanger/arm/source/
      slqite/sqlite-3.6.1/_install/include -Wall
    是不是程序的路径太长了? 可以这样:
    $ sudo cp -rP sqlite-3.6.1/_install/lib/libsqlite3.* /usr/local//
    arm/3.4.1/arm-linux/lib/
    $ sudo cp sqlite-3.6.1/_install/include/* /usr/local/arm/3.4.1//
      arm-linux/include/
    这样编译就比较方便了:
    $ arm-linux-gcc -o test test.c -lsqlite3 -Wall 
 
 
sqlite3嵌入式数据库arm+linux移植:
一直想找个嵌入式数据库来用用,几经辛苦,终于了解到有Berkeley DB和SQLite两种很不错的数据库。在一番衡量之后,决定选用SQLite,毕竟它支持SQL。虽然性能比不上Berkeley DB,但免费小巧,速度快。再者它支持SQL92标准,可移植性好。BDB虽然很强可以用于工业应用,但由于不是关系数据库,俺担心移植
性问题。
1.   下载sqlite3源代码
2. 解压源代码:
    tar  xvzf   sqlite-amalgamation-3.6.1.tar.gz
3. 配置交叉编译到arm linux平台:
    ./configure --prefix=/home/rootfs/home/sqlite --target=arm-linux --host=arm-linux LD=arm-linux-ld
4. 编译:
       make
5. 安装:
      make install
     头文件和生成的库文件将安装到:/home/rootfs/home/sqlite目录下。
6. 写自己的数据库应用
#i nclude <stdio.h>
#i nclude <sqlite3.h>
 
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
  int i;
  for(i=0; i<argc; i++){
    printf("%s = %s/n", azColName[i], argv[i] ? argv[i] : "NULL");
  }
  printf("/n");
  return 0;
}
 
int main(int argc, char **argv){
  sqlite3 *db;
  char *zErrMsg = 0;
  int rc;
 
  if( argc!=2 ){
    fprintf(stderr, "Usage: %s DATABASE /n", argv[0]);
    return 0;
  }
  rc = sqlite3_open(argv[1], &db);
  if( rc ){
    fprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db));
    sqlite3_close(db);
    return 0;
  }
 
  char *sql = " CREATE TABLE SensorData(               /
                        ID       INTEGER PRIMARY KEY,  /
                        SensorID INTEGER,              /
                        SiteNum  INTEGER,              /
                        Time     VARCHAR(12),          /
                        SensorParameter REAL           /
                );";
   //使用sql字符串指定的sql语言 创建数据表SensorData
  sqlite3_exec( db , sql , 0 , callback , &zErrMsg ); 
 
   //插入数据到数据表
  sql = "INSERT INTO 'SensorData' VALUES( 0 , 1 , 1 ,  '200605011206', 18.9 );" ;
   sqlite3_exec( db , sql , 0 , callback , &zErrMsg );

   //插入数据到数据表
  sql = "INSERT INTO  'SensorData'  VALUES(1 , 1 , 1 , '200605011306', 16.4 );" ;
  sqlite3_exec( db , sql , 0 , callback , &zErrMsg );
 
  int nrow = 0, ncolumn = 0;
  char **azResult;
  int i;
  //从数据表查询数据
  sql = "SELECT * FROM SensorData ";
  sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
 
  printf( "row:%d column=%d" , nrow , ncolumn );
  printf( "The result of querying is :" );
  for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ ){
     printf( "azResult[%d] = %s /r/n", i , azResult[i] );
  }
 
  sqlite3_free_table( azResult );
 
  if( rc!=SQLITE_OK ){
        fprintf(stderr, "SQL error: %s/n", zErrMsg);
        sqlite3_free(zErrMsg);
  }
  sqlite3_close(db);
 
  return 0;
}
7. 编写Makefile
 prefix=/home/rootfs/home/sqlite
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Libs = -L${libdir} -lsqlite3 -lpthread
Cflags = -I${includedir}
 
CROSS_COMPILE = arm-linux-
CC = $(CROSS_COMPILE)gcc
LD = $(CROSS_COMPILE)ld
 
radiodb: radiodb.o
        $(CC) $^ $(Libs)  -o $@
radiodb.o:radiodb.c
        $(CC) $(Cflags) -c $^ -o $@
clean:
        rm -rf radiodb  *.o
in:
        cp radiodb /home/rootfs/home/sqlite
   注意makefile里的红色字体内容可以在sqlite安装目录的lib下的pkconfig下的文件查得。
 
应该是环境变量的问题.
export LD_LIBRAY_PATH=/***/lib:$LD_LIBRARY_PATH
/***/lib 为sqlite库文件的路径.
libsqlite3.so: symbolic link to libsqlite3.so.0.8.6
libsqlite3.so.0: symbolic link to libsqlite3.so.0.8.6
libsqlite3.so.0.8.6: ELF 32-bit LSB shared object, ARM, version 1 (ARM), stripped
就是把这三个文件所在的目录的路径加入到LD_LIBRARY_PATH中就可以了.
或者是把这三个文件拷贝到开发板的/usr/lib目录下就OK了.
记住:拷贝时要加选项: cp -arf libsqlite.s* /ust/lib就行了.
 
 
这篇虽然很老了,但是后面的调试很详细,也许对你很有帮助:
虽然网上有很多高手对 sqlite 数据库的ARM-Linux移置进行过详细的介绍,但最近发现很多朋友还在问这个问题。
虽然我对 sqlite 的了解说不上透彻,但是写点东西让初学者能够很快上手,特别是能够让刚接触sqlite的朋友也能轻松完成移置工作,
也算是我的心愿之一。也许很多高手会觉得我这是班门弄斧,但是我还是想写点关于 sqlite 的基本知识,这样也许能给予某些人一些帮助,希望如此。 

1.1 sqlite简介
(跳过)

1.2 下载代码

(跳过)
1.3 交叉编译sqlite库
准备工作:
1. 取得一个 arm-linux-gcc 的编译器。
2. sqlite的源码 sqlite-3.0.8.tar.gz (本文以)
好了,我们可以开始了。 
这里设 arm-linux-gcc 在 /usr/local/arm-linux/bin/ 目录下
解压sqlite-3.0.8.tar.gz 到/usr/local/arm-linux/sqlite
# tar zxvf sqlite-3.0.8.tar.gz -C /usr/local/arm-linux/sqlite
# cd /usr/local/arm-linux/sqlite
将目录下的 configure 文件的
19206行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
20107行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
20514行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
20540行 { (exit 1); exit 1; }; }改为 { (echo 1); echo 1; }; }
# mkdir /usr/local/arm-linux/sqlite-arm-linux
# cd /usr/local/arm-linux/sqlite-arm-linux
设置交叉编译环境
# export PATH=/usr/local/arm-linux/bin:$PATH
配置:
# ../sqlite/configure --host=arm-linux --prefix=/usr/local/arm-linux/sqlite-arm-linux
注意:这里不用写成了 "../sqlite/configure --host=arm-linux --prefix=/usr/local/arm-linux/sqlite-arm-linux/"
这最后一个斜杠"/"不要带上了。
如果一切顺利的话,会在/usr/local/arm-linux/sqlite-arm-linux目录下生成一些相关文件:
config.log config.status libtool Makefile sqlite3.pc
改/usr/local/arm-linux/sqlite-arm-linux/Makefile文件的 BCC = arm-linux-gcc -g -O2 为 BCC = gcc -g -O2
编译安装:
# make
# make install
/usr/bin/install -c -d /usr/local/arm-linux/sqlite-arm-linux/lib
./libtool --mode=install /usr/bin/install -c libsqlite3.la /usr/local/arm-linux/sqlite-arm-linux/lib
/usr/bin/install -c .libs/libsqlite3.so.0.8.6 /usr/local/arm-linux/sqlite-arm-linux/lib/libsqlite3.so.0.8.6
(cd /usr/local/arm-linux/sqlite-arm-linux/lib && rm -f libsqlite3.so.0 && ln -s libsqlite3.so.0.8.6 libsqlite3.so.0)
(cd /usr/local/arm-linux/sqlite-arm-linux/lib && rm -f libsqlite3.so && ln -s libsqlite3.so.0.8.6 libsqlite3.so)
/usr/bin/install -c .libs/libsqlite3.lai /usr/local/arm-linux/sqlite-arm-linux/lib/libsqlite3.la
/usr/bin/install -c .libs/libsqlite3.a /usr/local/arm-linux/sqlite-arm-linux/lib/libsqlite3.a
arm-linux-ranlib /usr/local/arm-linux/sqlite-arm-linux/lib/libsqlite3.a
chmod 644 /usr/local/arm-linux/sqlite-arm-linux/lib/libsqlite3.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/arm-linux/sqlite-arm-linux/lib
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/arm-linux/sqlite-arm-linux/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
 
 
 
 
2 sqlite3嵌入式数据库的ARM-Linux移置详解 
 during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
/usr/bin/install -c -d /usr/local/arm-linux/sqlite-arm-linux/bin
./libtool --mode=install /usr/bin/install -c sqlite3 /usr/local/arm-linux/sqlite-arm-linux/bin
/usr/bin/install -c .libs/sqlite3 /usr/local/arm-linux/sqlite-arm-linux/bin/sqlite3
/usr/bin/install -c -d /usr/local/arm-linux/sqlite-arm-linux/include
/usr/bin/install -c -m 0644 sqlite3.h /usr/local/arm-linux/sqlite-arm-linux/include
/usr/bin/install -c -d /usr/local/arm-linux/sqlite-arm-linux/lib/pkgconfig;
/usr/bin/install -c -m 0644 sqlite3.pc /usr/local/arm-linux/sqlite-arm-linux/lib/pkgconfig;
注明: "# make install" 这一步将会在 /usr/local/arm-linux/sqlite-arm-linux/lib 生成库文件
# cd lib
# file libsqlite3.so.0.8.6
libsqlite3.so.0.8.6: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not stripped
此时生成的sqlite文件是还未strip过的,你可以使用命令“file sqlite”查看文件信息。用strip处理过后,将去掉其中的调试信息,执行文
件大小也将小很多。命令如下:
# arm-linux-strip libsqlite3.so.0.8.6
另外可以生成帮助文档,以便以后查询。
# make doc
好了,这样我们已经编译出了 

1.4 在ARM板上运行sqlite
将/usr/local/arm-linux/sqlite-arm-linux/bin/目录下的 sqlite3 文件下载到你的arm板上,
方法很多,你需要根据自己的情况来选择。如ftp,nfs,串口等。
好,开始运行
chmod +wx sqlite
[root@51Board var]# ./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板上。
再次运行,
[root@51Board var]# ./sqlite3 zieckey.db
./sqlite3: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file
or directory
还是出错,哦,我们没有设置环境变量,
假设我们下在库文件在ARM板上的 /usr/qpe/lib/ 目录下,这里设置环境就像下面:
[root@51Board var]# export LD_LIBRARY_PATH=/usr/qpe/lib:$LD_LIBRARY_PATH
好了这样就可以运行了:
[root@51Board var]# ./sqlite3 zieckey.db
SQLite version 3.0.8
Enter ".help" for instructions
sqlite>
看见
sqlite>
提示符号没有?成功了。哈哈!!
打个“.help”来看看命令先:-)
sqlite>.help
好了。现在sqlite已经在arm-linux下跑了起来。如何,感觉很high吧。
1.5 编写一个程序到ARM板上运行

现在我们来写个C/C++程序,调用 sqlite 的 API 接口函数查询数据库中表的内容。并在ARM板上运行。
下面是一个C程序的例子,显示怎么使用 sqlite 的 C/C++ 接口. 这个函数调用sqlite3_open() 在 22 行打开数据库, sqlite3_get_table 在 40 行执行 SQL 命令, 并且sqlite3_close() 在 47 行关闭数据库连接。
代码:
 
// name: test_sqlite.c
// This file is used to test C/C++ API for sqlite
 
 
 
3 sqlite3嵌入式数据库的ARM-Linux移置详解 
 
// Author : zieckey
// 2006/06/28
 

#include <stdio.h>
#include <sqlite3.h>
int main( void )
{
sqlite3 *db=NULL;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("zieckey.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
if( rc ){
fprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
else printf("open zieckey.db successfully!/n");
sqlite3_close(db); //关闭数据库
return 0;
}
 

编译:# arm-linux-gcc test_sqlite.c -o test_sqlite_for_arm.out
也许会碰到类似这样的问题:
# arm-linux-gcc test_sqlite.c -o test_sqlite_for_arm.out
test_sqlite.c:7:21: sqlite3.h: No such file or directory
test_sqlite.c: In function `main':
test_sqlite.c:11: error: `sqlite3' undeclared (first use in this function)
test_sqlite.c:11: error: (Each undeclared identifier is reported only once
test_sqlite.c:11: error: for each function it appears in.)
test_sqlite.c:11: error: `db' undeclared (first use in this function)

这是个没有找到库文件的问题。
由于用到了用户自己的库文件,所用应该指明所用到的库,我们可以这样编译:
 
# arm-linux-gcc test_sqlite.c -o test_sqlite_for_arm.out -lsqlite3
 
我用用 -lsqlite3 选项就可以了(前面我们生成的库文件是 libsqlite3.so.0.8.6 等,
去掉前面的lib和后面的版本标志,就剩下 sqlite3 了所以是 -lsqlite3 )。
不过似乎还是可能出现问题,例如下面的这样:
]# arm-linux-gcc test_sqlite.c -o test_sqlite_for_arm.out -lsqlite3
test_sqlite.c:7:21: sqlite3.h: No such file or directory
test_sqlite.c: In function `main':
test_sqlite.c:11: error: `sqlite3' undeclared (first use in this function)
test_sqlite.c:11: error: (Each undeclared identifier is reported only once
test_sqlite.c:11: error: for each function it appears in.)
test_sqlite.c:11: error: `db' undeclared (first use in this function)

我们刚才在编译安装的时候,选择了安装路径是 /usr/local/arm-linux/sqlite-arm-linux 
这样编译安装时,sqlite的库文件将会生成在 /usr/local/arm-linux/sqlite-ix86-linux/lib 目录下
这时编译还要指定库文件路径,因为系统默认的路径没有包含 /usr/local/arm-linux/sqlite-arm-linux/lib
 
# arm-linux-gcc test_sqlite.c -o test_sqlite_for_arm.out -lsqlite3 -lsqlite3 -L/usr/local/arm-linux/sqlite-arm-linux/lib
 
如果还不行的话,可能还需要指定头文件 sqlite3.h 的路径,如下:
 
# arm-linux-gcc test_sqlite.c -o test_sqlite_for_arm.out -lsqlite3 -L/usr/local/arm-linux/sqlite-arm-linux/lib -I/usr/local/arm-linux/sqlite-arm-linux/include
现在可以看看生成的文件格式:
# file test_sqlite_for_arm.out
test_sqlite_for_arm.out: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
这说明已经初步成功了。

下面就把 test_sqlite_for_arm.out 文件下载到ARM板上运行了(下载过程不用说了,如串口、ftp、nfs等待都可以)
运行:
[root@51Board var]# ./test_sqlite_for_arm.out
./test_sqlite_for_arm.out: error while loading shared libraries: libsqlite3.so.0: cannot open shared object file: No such file or directory

运行是也许会出现类似上面的错误。
这个问题是由于运行沿着系统默认路径没有找到库文件引起的。这时需要指定 libsqlite3.so.0 库文件的路径。
在shell下输入:
[root@51Board var]# export LD_LIBRARY_PATH=/usr/qpe/lib:$LD_LIBRARY_PATH
再运行
# test_sqlite_for_arm.out
open zieckey.db successfully!
 

总结:这里,我们了解了sqlite的移置基本过程,怎么在C/C++中查询数据库中表的内容。
本文一定存在很多不妥或者错误之处,还劳烦各位不吝赐教指正。

 

转载网址:http://blogold.chinaunix.net/u3/105042/showart_2158035.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值