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上运行
编译程序:
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!
成功!!!
把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上运行
- #include <stdio.h>
- #include <sqlite3.h> //数据库头文件
- int main( void )
- {
- sqlite3 *db=NULL;
- int rc;
- rc = sqlite3_open("test.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
- if( rc ){
- fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
- sqlite3_close(db);
- exit(1);
- }
- else
- printf("open test.db successfully!\n");
- sqlite3_close(db); //关闭数据库
- return 0;
- }
编译程序:
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!
成功!!!