移植sqlite-3.5.6到s3c2410上

来源:互联网 发布:闲来麻将源码架设教程 编辑:程序博客网 时间:2024/06/02 16:07

移植sqlite-3.5.6到s3c2410上


pc机上要安装交叉编译环境(我安装的是arm-linux-gcc 3.4.1)
把sqlite-3.5.6.tar.gz解压
#tar -vzxf sqlite-3.5.6.tar.gz
进入sqlite-3.5.6目录
#cd sqlite-3.5.6
创建sqlite-arm目录,并进入该目录
#mkdir sqlite-3.5.6
#cd sqlite-arm

接着输入以下命令:
#../configure --prefix=/home/tong/sqlite-3.5.6/sqlite-arm --disable-tcl --host=arm-linux
configure:是软件的组态设置文件,产生对应平台的Makefile文件,--prefix:表示产生的文件的存放目录

接着进行编译并进行安装
#make     \\根据Makefile的内容   编译出符合平台的可执行文件 
#make install     \\安装编译成功的软件

执行完以上命令就会在/home/tong/sqlite-3.5.6/sqlite-arm/目录下产生:bin,include,lib等

可以分别使用如下命令把动态库文件的调试信息给剥离,减少文件所占有的空间
#arm-linux-strip libsqlite3.so.0.8.6
#arm-linux-strip sqlite3

把bin目录下的sqlite3文件和lib目录下所有的文件都复制到新创建的目录sqlite,然后把sqlite整个文件夹烧到板上(我的存放的位置是/mnt/yaffs/,由于lib目录的libsqlite3.so和libsqlte3.so.0是libsqlite3.so.0.8.6的软连接文件,所以复制不了,可以先去不管它)


设置环境变量
[/mnt/yaffs/sqlite]export LD_LIBRARY_PATH=/mnt/yaffs/sqlite/:$LD_LIBRARY_PATH
[/mnt/yaffs/sqlite]export PATH=/mnt/yaffs/sqlite/:$PATH

接下来建立软连接
[/mnt/yaffs/sqlite]ln -s libsqlite3.so.0.8.6 libsqlite3.so.0
[/mnt/yaffs/sqlite]ln -s libsqlite3.so.0.8.6 libsqlite3.so

这样,移植就算完成了
[/mnt/yaffs/sqlite]sqlite3 test.db
出现如下内容,表示成功
SQLite version 3.5.6
Enter ".help" for instructions
sqlite> 

接着,编写一个连接sqlite数据库的程序,在2410上运行


[cpp] view plaincopy
  1. #include <stdio.h>  
  2. #include <sqlite3.h>        //数据库头文件  
  3.   
  4. int main( void )  
  5. {  
  6.     sqlite3 *db=NULL;  
  7.     int rc;  
  8.     rc = sqlite3_open("test.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件  
  9.     if( rc ){  
  10.         fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));  
  11.         sqlite3_close(db);  
  12.         exit(1);  
  13.     }  
  14.     else  
  15.         printf("open test.db successfully!\n");  
  16.   
  17.     sqlite3_close(db); //关闭数据库  
  18.     return 0;  
  19. }   




编译程序:
tong@tong-desktop:~/exp$ arm-linux-gcc sqlite_connect.c -o sqlite_connect -lsqlite3 -L/home/tong/sqlite-3.5.6/sqlite-arm/lib -I/home/tong/sqlite-3.5.6/sqlite-arm/include

-lsqlite3 -L/home/tong/sqlite-3.5.6/sqlite-arm/lib:表示在/home/tong/sqlite-3.5.6/sqlite-arm/lib目录中寻找sqlite3的库文件

-I/home/tong/sqlite-3.5.6/sqlite-arm/include:表示在/home/tong/sqlite-3.5.6/sqlite-arm/include目录中寻找头文件

查看产生的文件的属性:
tong@tong-desktop:~/exp$ file sqlite_connect
sqlite_connect: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.4.3, not stripped

把sqlite_connect文件烧到板上,运行:
[/mnt/yaffs/test]./sqlite_connect 
open test.db successfully!
成功!!!
原创粉丝点击