sqlite3.3.6的移植
2008-05-29 23:21
260 查看
要移植sqlite到arm-linux开发板,首先要安装交叉编译环境,要用2.95.3版的
arm-linux-gcc的安装
1、将arm-linux-gcc的压缩包在/目录下解压缩
Tar zxvf arm-linux-gcc-2.95.3.tar.gz
2、vi /etc/profile;在出现pathmunge 的语句段后添加pathmunge /usr/local/arm/2.95.3(版本号)/bin;
3、保存对profile的修改后,执行source /etc/profile就OK了
之后你就可以用arm-linux-gcc来编译你的程序了。
Sqlite的安装:
将sqlite-3.3.6.tar.gz下载到/root目录下。然后,通过下列命令解压缩sqlite-3.3.6.tar.gz:
# tar zxvf sqlite-3.3.8.tar.gz
在sqlite-3.3.6/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过下面的命令拷贝此文件并重命名为Makefile:
# cp Makefile.linux-gcc Makefile
接下来,用vim打开Makefile文件并手动修改Makefile文件的内容。
对Makefile的修改主要包括两个方面:首先是将编译器、归档工具等换成交叉工具链中的对应工具,其次是去掉与TCL相关的编译选项,因为默认情况下,将会编译SQLite3的Tcl语言绑定,但是在移植到ARM-Linux的时候并不需要和Tcl语言绑定在一起,因此将两个与TCL有关的行注释掉。Makefile文件的修改情况如表1所示。
Makefile文件的修改情况
17行:TOP = ../sqlite 修改为 TOP = .
73行:TCC = gcc -O6 修改为 TCC = arm-linux-gcc -O6
81行:AR = ar cr 修改为 AR = arm-linux-ar cr
83行:RANLIB = ranlib 修改为 RANLIB = arm-linux-ranlib
86行:MKSHLIB = gcc –shared 修改为 MKSHLIB = arm-linux-gcc –shared
注释掉:TCL_FLAGS = -I/home/drh/tcltk/8.4linux
LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件。找到main.mk文件中的下面这一行:
select.o table.o tclsqlite.o tokenize.o trigger.o /
把它替换成:
select.o table.o tokenize.o trigger.o /
也就是把该行上的tclsqlite.o去掉。这样编译的时候将不会编译SQLite3的Tcl语言绑定。自此,修改工作就完成了,接下来就可以开始编译SQLite3了,这通过make命令即可完成:
# make
编译完成之后,将在sqlite3.3.6/目录下生成库函数文件libsqlite3.a和头文件sqlite3.h。头文件sqlite3.h中声明了所有API接口函数原型,所有SQLite3应用程序都必须包含这个头文件。库函数文件libsqlite3.a(静态库)包含了所有API接口函数的实现,静态编译SQLite3应用程序时必须和这个库函数文件链接在一起。
测试程序:
#include <stdio.h>
#include <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 != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT/n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s/n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
移植:
1、程序的移植
将上面的源程序保存为test.c,然后,通过如下命令编译该程序:
# arm-linux-gcc -I /root/sqlite-3.3.6/ -L /root/sqlite-3.3.6 -o test test.c -lsqlite3 -static
-I 指明了头文件sqlite3.h所在目录 -L 指明了静态库libsqlite3.a所在目录
–lsqlite3指明要链接静态库文件libsqlite3.a -static指明是静态编译
Arm-linux-strip test 去掉调示信息
接下来就可以将test下载到开发板上运行了
2、sqlite3的移植
在PC机的目录/usr/lib 中找到libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6三个库文件,去掉调示信息后把它们复制到开发板的/usr/lib目录下
Arm-linux-strip libsqlite3.so
Arm-linux-strip libsqlite3.so.0
Arm-linux-strip libsqlite3.so.0.8.6
Cp –arf libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 /usr/lib
注:因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的,所以拷贝是要加-arf的
去掉/root/sqlite3.3.6目录下的sqlite3的调示信息后,将它下载到开发板的/usr/bin目录
Cp sqlite3 /usr/bin
注:我是把U盘挂载到开发板上,进入到挂载目录下执行上面的拷贝操作的,所以要拷贝的文件前面都没加目录
这样就可以在开发板上直接运行sqlite3了
arm-linux-gcc的安装
1、将arm-linux-gcc的压缩包在/目录下解压缩
Tar zxvf arm-linux-gcc-2.95.3.tar.gz
2、vi /etc/profile;在出现pathmunge 的语句段后添加pathmunge /usr/local/arm/2.95.3(版本号)/bin;
3、保存对profile的修改后,执行source /etc/profile就OK了
之后你就可以用arm-linux-gcc来编译你的程序了。
Sqlite的安装:
将sqlite-3.3.6.tar.gz下载到/root目录下。然后,通过下列命令解压缩sqlite-3.3.6.tar.gz:
# tar zxvf sqlite-3.3.8.tar.gz
在sqlite-3.3.6/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过下面的命令拷贝此文件并重命名为Makefile:
# cp Makefile.linux-gcc Makefile
接下来,用vim打开Makefile文件并手动修改Makefile文件的内容。
对Makefile的修改主要包括两个方面:首先是将编译器、归档工具等换成交叉工具链中的对应工具,其次是去掉与TCL相关的编译选项,因为默认情况下,将会编译SQLite3的Tcl语言绑定,但是在移植到ARM-Linux的时候并不需要和Tcl语言绑定在一起,因此将两个与TCL有关的行注释掉。Makefile文件的修改情况如表1所示。
Makefile文件的修改情况
17行:TOP = ../sqlite 修改为 TOP = .
73行:TCC = gcc -O6 修改为 TCC = arm-linux-gcc -O6
81行:AR = ar cr 修改为 AR = arm-linux-ar cr
83行:RANLIB = ranlib 修改为 RANLIB = arm-linux-ranlib
86行:MKSHLIB = gcc –shared 修改为 MKSHLIB = arm-linux-gcc –shared
注释掉:TCL_FLAGS = -I/home/drh/tcltk/8.4linux
LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件。找到main.mk文件中的下面这一行:
select.o table.o tclsqlite.o tokenize.o trigger.o /
把它替换成:
select.o table.o tokenize.o trigger.o /
也就是把该行上的tclsqlite.o去掉。这样编译的时候将不会编译SQLite3的Tcl语言绑定。自此,修改工作就完成了,接下来就可以开始编译SQLite3了,这通过make命令即可完成:
# make
编译完成之后,将在sqlite3.3.6/目录下生成库函数文件libsqlite3.a和头文件sqlite3.h。头文件sqlite3.h中声明了所有API接口函数原型,所有SQLite3应用程序都必须包含这个头文件。库函数文件libsqlite3.a(静态库)包含了所有API接口函数的实现,静态编译SQLite3应用程序时必须和这个库函数文件链接在一起。
测试程序:
#include <stdio.h>
#include <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 != 3) {
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT/n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if (rc) {
fprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s/n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
移植:
1、程序的移植
将上面的源程序保存为test.c,然后,通过如下命令编译该程序:
# arm-linux-gcc -I /root/sqlite-3.3.6/ -L /root/sqlite-3.3.6 -o test test.c -lsqlite3 -static
-I 指明了头文件sqlite3.h所在目录 -L 指明了静态库libsqlite3.a所在目录
–lsqlite3指明要链接静态库文件libsqlite3.a -static指明是静态编译
Arm-linux-strip test 去掉调示信息
接下来就可以将test下载到开发板上运行了
2、sqlite3的移植
在PC机的目录/usr/lib 中找到libsqlite3.so libsqlite3.so.0. libsqlite3.so.0.8.6三个库文件,去掉调示信息后把它们复制到开发板的/usr/lib目录下
Arm-linux-strip libsqlite3.so
Arm-linux-strip libsqlite3.so.0
Arm-linux-strip libsqlite3.so.0.8.6
Cp –arf libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 /usr/lib
注:因为libsqlite3.so,libsqlite3.so.0是链接到libsqlite3.so.0.8.6的,所以拷贝是要加-arf的
去掉/root/sqlite3.3.6目录下的sqlite3的调示信息后,将它下载到开发板的/usr/bin目录
Cp sqlite3 /usr/bin
注:我是把U盘挂载到开发板上,进入到挂载目录下执行上面的拷贝操作的,所以要拷贝的文件前面都没加目录
这样就可以在开发板上直接运行sqlite3了
相关文章推荐
- SQLite3.3.6在ARM2410上的移植
- 在我的Ubuntu上移植SQLite3.3.6,编译成静态库
- 嵌入式数据库Sqlite3.3.6移植教程
- 移植sqlite-3.3.6
- sqlite3移植到ARM SQLITE3.7.14
- SQlite在PC和ARM上的编译移植
- SQLite3.3.6 源代码文件结构
- arm板 sqlite3移植中出现的错误及解决方法:缺少libreadline.so.5和libncurses.so.5
- ZedBoard--(3)SQLite3的移植
- SQlite在ARM上的编译移植
- 移植SQLite到开发板
- 基于s5pv210嵌入式linux系统sqlite3数据库移植
- Hisi开发板上 SQLite-3.3.8移植
- 移植nginx+php+sqlite到arm linux(一)
- Sqlite3.78移植到VxWorks6.6
- SQLite向arm-linux的移植
- sqlite的安装移植及使用,持续更新吧
- sqlite移植到mini2440
- sqlite3移植
- SQlite在PC和ARM上的编译移植