linux认证:ucLinux下sqlite数据库移植全攻略(4)
. \0 N" K0 r. o3、函数do_meta_command(。。.)
8 V) Q& |# P& a6 a: n7 H) Z2 M找到类似这样的一句:# c8 {: q! f. K
sqlite_exec(p-》db, “PRAGMA database_list; ”, callback, &data, &zErrMsg);1 s3 {2 n6 _2 U% u; z; b: n
在它的前面有一句
! W. q$ `5 i# y: gmemcpy(&data, p, sizeof(data));$ r) R5 f" x9 n
现在在memcpy下面增加一行
0 R2 {3 f5 u# l2 g+ Jdata.cnt = 0;
# Y6 m' {! Y# q9 g$ N即将结构中cnt的值赋为0 ;9 D* m6 e* x4 P+ K/ E7 l) K: s
现在代码会被修改成类似:
/ r5 [2 e' L% Y _/ M( @4 I/ G% Nopen_db(p);# K2 i8 L3 x/ a9 Y. B+ C4 Y
memcpy(&data, p, sizeof(data));" ]+ \3 }* R1 C; ]" v( {) A7 @
data.cnt = 0;
% R6 o1 ?5 g" X# d4 [3 a5 J0 P' Y再继续。! E: J _; n; \! D
找到类似这样的一句:# [2 M- ?/ N* H
strcmp(azArg[1],“stdout”)==0
y' l& m. U, [8 H; p9 k在它的下面的括号中:
# Q/ ]* T8 t9 t- X0 q [将 strcpy(p-》outfile,“stdout”);
1 ^' |+ \" m5 R& U% T用 p-》outfilep = “stdout”;
) }9 K2 \7 k% x4 I( C! |. E4 @$ S2 h来替换。
7 _+ C8 \# h6 D2 B4 v1 f: ]再在它下面的5-6行处4 h8 I& @8 N7 }4 w& b1 Y |" j
将:
8 n, f$ a D' b) Vstrcpy(p-》outfile,azArg[1]);( Y( ~) A3 J( z
用:
6 a) t9 E8 e8 Qstrcpy(outfilename,azArg[1]);- F/ [( o# N3 S. @ `% T
p-》outfilep = outfilename;# Y' I% E! R. Y, ?6 t5 j
替换。
+ Z5 j6 e G) O+ \$ h- W再继续,找到类似这样的一句:7 v% U* n2 G& q+ U& J) J- N3 W
fprintf(p-》out,“%9.9s: %s\n”,“output”,+ s( d* ?# n: y: U
将:" d9 |0 m- b$ \& c0 V
fprintf(p-》out,“%9.9s: %s\n”,“output”, strlen(p-》outfile) ? p-》outfile : “stdout”);- V. d- g2 D, _! w1 P5 Y
用:) ~2 e# r- ? V8 o* u
fprintf(p-》out,“%9.9s: %s\n”,“output”, p-》outfilep && strlen(p-》outfilep) ? p-》outfilep : “stdout”);
( d" j5 p7 Z; u替换。
8 W( b! U! G* G7 ~完成修改。' J7 b: I B8 m" I
上面的所有的对sqlite的修改完成后,你就可以make dep;make lib_only;make user_only;make romfs;make image了。) @; v2 y2 m6 P! R8 H1 X
如果你对sqlite 的修改,在make user_only过程中出现错误的话,你可以忽略make dep;make lib_only命令,直接再次进行make user_only;make romfs;make image;就可以了,而不用重复make dep;make lib_only。" z/ q" r( ~4 b1 o( Y1 v
make image会帮你生成romfs文件系统。现在在uClinux-dist/images下面就有编译生成的romfs文件系统了。这个就是我们需要的包含有sqlite的romfs了。, Q$ J& B8 m8 u9 e# l n" r
在上面的过程中,你可以不用在“make image”后再去“make”生成kernel内核,因为你只需要生成romfs就可以了,它里面已经有sqlite了。 |