枣庄市庄里水库建设管理处网站,海口网站建设维护,如何进行网站优化设计,wordpress媒体库远程图片SQLite实现了大部分SQL92标准的SQL语句#xff0c;同时支持ACID。还有其它许多特性这里不做深究#xff0c;因为这在嵌入式领域来说应该是够用了。 下载#xff1a;下载页面#xff1a;http://www.sqlite.org/download.html我使用的还是当前最新版本#xff1a;sqlite-3.3…SQLite实现了大部分SQL92标准的SQL语句同时支持ACID。还有其它许多特性这里不做深究因为这在嵌入式领域来说应该是够用了。 下载下载页面http://www.sqlite.org/download.html我使用的还是当前最新版本sqlite-3.3.7.tar.gz写完的时候已经更新出3.3.8版本了真快啊…… 安装时间不多简单介绍安装过程解压sqlite到uclinux-dist/user/sqlite/ 对uClinux的修改 1. 下载sqlite解压到uclinux-dist/user/下2. 编辑uclinux-dist/user/下的Makefile增加 dir_$(CONFIG_USER_SQLITE_SQLITE) sqlite 3. uclinux-dist/config/Configure.help中增加 CONFIG_USER_SQLITE_SQLITE SQLite Database. 4. uclinux-dist/config/config.in最后增加 mainmenu_option next_comment comment Database bool sqlite CONFIG_USER_SQLITE_SQLITE endmenu 对SQLite的修改 1. uclinux-dist/user/sqlite/main.mk中TCCX修改为 TCCX $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src $(CFLAGS) LIBOBJ修改为一些模块不需要比如tcl LIBOBJ alter.o analyze.o attach.o auth.o btree.o build.o callback.o complete.o date.o delete.o expr.o func.o hash.o insert.o loadext.o main.o opcodes.o os.o os_unix.o pager.o parse.o pragma.o prepare.o printf.o random.o select.o table.o tokenize.o trigger.o update.o util.o vacuum.o vdbe.o vdbeapi.o vdbeaux.o vdbefifo.o vdbemem.o where.o utf.o legacy.o vtab.o sqlite3$(EXE)规则部分修改为 shell.o: $(TOP)/src/shell.c sqlite3.h $(TCCX) $(READLINE_FLAGS) -c $(TOP)/src/shell.c sqlite3$(EXE): shell.o libsqlite3.a $(TCC) $(LDFLAGS) -o $ shell.o libsqlite3.a $(LIBREADLINE) $(THREADLIB) $(LDLIBS) 去掉install增加 distclean: clean rm -f config.h 2. 拷贝Makefile.linux-gcc为Makefile修改如下 TCC $(CROSS)gcc AR $(CROSS)ar cr RANLIB $(CROSS)ranlib #TCL_FLAGS -I/home/drh/tcltk/8.4linux #LIBTCL /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl 编译在make menuconfig的user application部分可以看到刚添加的Database –菜单进入并选择SQLite保存退出后按原先的步骤重新编译内核即可。如果只需要sqlite的库那么make user_only就可以了。编译完成后会在user/sqlite目录下生成库libsqlite3.a。 测试一下编写一个测试程序sqlitetest.c代码如下来自官方quick start #include #include static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i0; i 然后为它写一个Makefile大致如下 UCLINUX_PATH /home/uClinux-dist SQLITE_PATH $(UCLINUX_PATH)/user/sqlite CROSS arm-elf- CPU_CFLAGS -O3 -Wall -mapcs-32 -mtunearm7tdmi -fno-builtin -msoft-float -Os -D__uClinux__ -D__ARM_CPU__ -I$(UCLINUX_PATH)/lib/uClibc/include -I$(UCLINUX_PATH)/linux-2.4.x/include -I$(SQLITE_PATH) -D_DEBUG_ CPU_LDFLAGS -nostartfiles -Wl, -elf2flt -L$(UCLINUX_PATH)/lib/uClibc/lib CPU_ARFLAGS r CPU_LDLIBS $(UCLINUX_PATH)/lib/uClibc/lib/crt0.o $(UCLINUX_PATH)/lib/uClibc/lib/crti.o $(UCLINUX_PATH)/lib/uClibc/lib/crtn.o -lc MY_LDFLAGS -L$(SQLITE_PATH) MY_LDLIBS -lsqlite3 CFLAGS $(CPU_CFLAGS) LDFLAGS $(CPU_LDFLAGS) $(MY_LDFLAGS) LDLIBS $(CPU_LDLIBS) $(MY_LDLIBS) TOPDIR ./ CC $(CROSS)gcc EXEC sqlitetest CSRC sqlitetest.c OBJS $(patsubst %.c,%.o, $(CSRC)) all: $(EXEC) $(OBJS): %.o : %.c $(CC) $(CFLAGS) -c $ 运行make编译测试程序生成的程序大小约300KB linux:/home/work/sqlite # ll 总用量 688 drwxr-xr-x 2 root root 264 2006-10-09 11:25 . drwxr-xr-x 4 root root 160 2006-10-09 11:21 .. -rw------- 1 root root 982 2006-10-09 11:25 Makefile -rwxr--r-- 1 root root 315584 2006-10-09 11:25 sqlitetest -rw------- 1 root root 788 2006-10-09 11:21 sqlitetest.c -rwxr-xr-x 1 root root 396538 2006-10-09 11:25 sqlitetest.gdb -rw-r--r-- 1 root root 1600 2006-10-09 11:25 sqlitetest.o 接着将测试程序下载到目标板测试运行结果如下 # /home/sqlitetest /home/testdb.db CREATE TABLE my_table(id int, name varchar(20)) # /home/sqlitetest /home/testdb.db INSERT INTO my_table values(1, jianglj) # /home/sqlitetest /home/testdb.db INSERT INTO my_table values(2, Hily Jiang) # /home/sqlitetest /home/testdb.db SELECT * FROM my_table id 1 name jianglj id 2 name Hily Jiang