a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 94|回复: 0

[综合辅导] linux认证:ucLinux下sqlite数据库移植全攻略

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
linux认证:ucLinux下sqlite数据库移植全攻略
3 C! ?! d; R# _3 N5 g假设你已经具备正确编译uclinux的kernel的能力,即有能力完成make menuconfig;make dep;make lib_only;make user_only;make romfs;make image;make。而且还能将自己写的类似helloworld程序加到“用户自定义应用程序”中,即你能完成“uClinux- dist/Documentation/Adding-User-Apps-HOWTO”中所描述的“用户程序的订制”。7 f  C( }4 d* v; H7 q
大多数需要移植sqlite到uclinux的开发者,应该已经具备上面的能力,而只是不清楚如何修改sqlite来完成其在uclinux下的编译。如果你还不能完成上面的要求,那么请先做一定的准备工作,因为本范例所涉及到的内容主要是跟sqlite在uclinux下的移植有关,其他的在这个过程中出现的问题,开发者需要自行处理。6 T" n# p: q6 Y0 Y1 N  h- K5 i
本范例使用的uclinux是uClinux-dist-20030522.tar.gz,你可以从www.uclinux.org得到适合你的软件包。
4 l/ b$ a6 i" {, O  L9 v/ k5 \交叉编译工具是arm-elf-tools-20030314.sh,你也可以在http://www.uclinux.org找到它。2 C5 _( I; D- A' ]/ R+ R3 w) a) r
本范例使用的sqlite是sqlite-2.8.15.tar.gz,本文的方法也适合于2.8.x系列的sqlite;可能有部分内容不适用于3.0.x系列的sqlite,因为3.0.x中源代码有较大的变化。' i, G: d* A9 t2 v# N
1、 下载sqlite:你可以到www.sqlite.org/download.html,下载sqlite-2.8.15.tar.gz软件包;
  q  h$ h9 I- M( |* Y2、 将下载的软件包解压缩到uClinux-dist/user目录下;! ~$ f2 `( }8 ?2 w8 `
命令:& F; w6 `  }. k% I* d0 q/ T3 \7 r8 S
$tar zxvf sqlite-2.8.15.tar.gz -C uClinux-dist/user/+ c! i7 ]5 f7 x; M* h! u
现在在uclinux的user目录下,你应该可以看到sqlite目录了。解压缩到这个user目录主要是要将sqlite编译成一个普通的用户应用程序。
( x" }& X& V# V* u% w3 V+ R3、 用户应用程序的有关设置:
2 R- G1 u% |# b- [/ C按uClinux-dist/Documentation/Adding-User-Apps-HOWTO文档中说提到的,来添加sqlite作为一个用户应用程序,将其做成一个shell,这样就类似于uclinux自己的ps命令。
8 g1 S! s6 s  d, O$ d/ _* C  \编辑文件
/ Z* {& e' ~/ y9 wuClinux-dist/user/Makefile% }2 N* q; `3 d- K0 ^
uClinux-dist/config/Configure.help% ], Z$ @" f5 F5 V. r- n9 h% k" u1 b
uClinux-dist/config/config.in# E& d" `6 }4 q( v, k
我是在这些文件里查找“cpu”有关的项,然后在它的下面,加上自己的sqlite项,这个过程并不复杂。
7 l7 X* F2 u* Z& b8 {通过上面的修改后,你现在就可以运行uclinux的make menuconfig,选中“CustomizeVendor/User Settings”,再选中“Miscellaneous Applications”,可以看到它现在出现了一个新的“sqlite (NEW)”,这个就是我们刚添加进去的sqlite项。5 t' i: f4 J- k8 S5 b
在稍后的make romfs中,uclinux会将你的sqlite编译进来,做成romfs的一部分,因为你在uClinux-dist/user/Makefile中已经加上要编译sqlite项了。这样在移植后的uclinux的/bin中将会有sqlite命令可以让你来执行。& a. ?& {3 P% q8 O; ~
好,现在我们就要对sqlite进行修改,来做移植工作。: V: h5 \* t7 \, s' M" n
在下面的描述中,我们将对以下几个文件进行一定的添加、修改,从而来完成sqlite在uclinux下的编译:- G3 N+ I- c0 w
sqlite/main.mk 修改+ j, b* a+ H! {% x$ _0 a# L7 ^
sqlite/Makefile 添加
5 g% O* U) v* {/ d% `sqlite/src/os.c 修改
% P/ |4 c' }$ ^) o, p) X5 x& Asqlite/src/shell.c 修改
$ `) n1 Z2 \5 S& n2 C( a& a3 K4 O对这几个文件进行修改时,请自己做好这些文件的备份,比如你可以将它们拷贝一份,改名成文件名后面带.bak。这个很重要,可以避免你在修改的过程出现问题而无法还原。
+ E% e: K3 v& ^, P7 E6 s一、修改sqlite/main.mk
3 ^  M2 S8 i, |* m( K# w6 ?4 y8 j& ?1、TCCX7 {$ v# {8 R+ N( j# y% L

! `; H2 I5 m6 R' q; fTCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src) B- \( F7 D/ {: d2 d/ V
修改为7 L9 s: [+ @# ]5 x# K% C% j
TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src $(CFLAGS)7 Q- s7 M) t- c1 f
即加上$(CFLAGS)标记。
8 H7 T, e; {  e+ q# B* ?3 |0 ^2、 LIBOBJ, |( U: Y" ?9 N' Z
找到 # Object files for the SQLite library.
/ d5 ~. J9 c1 E9 X; a& Z! a将其中的tclsqlite.o去掉。即去掉tcl有关的东西。: H$ y9 w% b, x' U/ L
如果没有tclsqlite.o,那么不用处理它。( O$ t! z9 u/ ?
3、 sqlite$(EXE)+ f. @: K4 _  j4 ^
找到类似sqlite$(EXE)的一句,将:8 c* a" t5 v9 m
sqlite$(EXE): $(TOP)/src/shell.c libsqlite.a sqlite.h" L1 G9 A6 N, g% c
$(TCCX) $(READLINE_FLAGS) -o sqlite$(EXE) $(TOP)/src/shell.c \
; Z# Z; D# A$ Y7 olibsqlite.a $(LIBREADLINE) $(THREADLIB)5 K/ k" }2 h# R7 B7 v
替换为:
4 C# u7 e% p& U  Qshell.o: $(TOP)/src/shell.c sqlite.h
1 z/ r, p% }2 j$(TCCX) $(READLINE_FLAGS) -c $(TOP)/src/shell.c
+ g- F% U" q( h$ n5 U% |. `1 H, Tsqlite$(EXE): shell.o libsqlite.a" R9 r# ^' x8 g$ @4 P% x5 G
$(TCC) $(LDFLAGS) -o $@ shell.o \
' D, @) Y5 R# S+ l" x) ^9 S: klibsqlite.a $(LIBREADLINE) $(THREADLIB) $(LDLIBS)1 q- o- b, X' l" i* W
即在sqlite$(EXE)上一行加上shell.o,及在其后加上$(LDLIBS)标记。这个是对/src/shell.c的编译方法的修改。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 16:59 , Processed in 0.233765 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表