sqlite3的交叉编译移植

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

sqlite3的交叉编译移植2011-11-2222:52:17标签:数据库移植休闲sqlite职场原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。一、开发环境飞凌OK6410ubuntu-9.10交叉编译器arm-linux-gcc4.3.2sqlite-3.3.6(=/Index/index/)二、移植步骤ubuntu下root用户登录1、将sqlite-3.3.6拷贝到目录/root下#cd2、解压sqlite-3.3.6并到该目录下建立任意目录如build#tar-zxvfsqlite-3.6.22.tar.gz#cdsqlite-3.6.22#mkdirbuild3、修改sqlite-3.3.6下的configure#viconfigure或者#geditconfigure注释掉下列这些代码#iftest$cross_compiling=yes;then#{{echo$as_me:$LINENO::error:unabletofindacompilerforbuildingbuildtools&5#echo$as_me:error:unabletofindacompilerforbuildingbuildtools&2;}#{(exit1);exit1;};}#fi#else#test$cross_compiling=yes&&#{{echo$as_me:$LINENO::error:cannotcheckforfileexistencewhencrosscompiling&5#echo$as_me:error:cannotcheckforfileexistencewhencrosscompiling&2;}#{(exit1);exit1;};}#else#test$cross_compiling=yes&&#{{echo$as_me:$LINENO::error:cannotcheckforfileexistencewhencrosscompiling&5#echo$as_me:error:cannotcheckforfileexistencewhencrosscompiling&2;}#{(exit1);exit1;};}保存退出;4、到刚才你所创建的目录下,创建Makefile文件#cdbuild#../sqlite/configure--disable-tcl--host=arm-linux(注:这里可能会出现错误,只要把configure的路径改为绝对路径就可以了)这个时候你所创建的目录下应该有Makefile、libtool等四个文件5、修改刚刚生成的Makefile文件修改BCC=arm-linux-gcc-g-O2为BCC=gcc-g-O26、由于是移植到arm上,为了在应用程序中引用sqlite3中的API接口,我们需要创建静态库,所以再次需要修改Makefile修改内容如下:找到sqlite3$(TEXE):$(TOP)/src/shell.c.libs/libsqlite3.lasqlite3.h修改为sqlite3$(TEXE):$(TOP)/src/shell.c.libs/libsqlite3.asqlite3.h找到-o$@$(TOP)/src/shell.c.libs/libsqlite3.la\修改为-o$@$(TOP)/src/shell.c.libs/libsqlite3.a\(注意:这次编译不会生成sqlite的可执行文件,因为只是为了得到sqlite3.a静态库,在build目录下找到隐藏目录.libs,该目录下有sqlite3.a)7、重复步骤6把修改的Makefile中的sqlite3.a再改为sqlite3.la8、执行make和makeinstall命令,如下:#make#makeinstall这时应该不会有错误了,可以在目录/usr/local下看到目录libbininclude9、修改sqlite3可执行文件的执行权限#chmod775sqlite310、将lib目录下的libsqlite3.so、libsqlite3.so.0、libsqlite3.so.0.8.6下载到开发板的lib目录下,将sqlite3下载到bin目录下;11、测试数据库:a、新建数据库[rootL-ant]#sqlite3test.dbSQLiteversion3.6.18Enter.helpforinstructionsEnterSQLstatementsterminatedwitha;sqlitecreatetablefilm(number,name);sqliteinsertintofilmvalues(1,'aaa');sqliteinsertintofilmvalues(2,'bbb');sqliteselect*fromfilm;1|aaa2|bbbsqlite.quit[rootL-ant]#b、测试程序//test_sqlite.c#includestdlib.h#includestdio.h#includesqlite3.hstaticintcallback(void*NotUsed,intargc,char**argv,char**azColName){inti;for(i=0;iargc;i++){printf(%s=%s\n,azColName[i],argv[i]);}printf(\n);return0;}intmain(intargc,char**argv){sqlite3*db;char*zErrMsg=0;intrc;if(argc!=3){fprintf(stderr,Usage:%sDATABASESQL-STATEMENT\n,argv[0]);}rc=sqlite3_open(argv[1],&db);if(rc){fprintf(stderr,Can'topendatabase:%s\n,sqlite3_errmsg(db));sqlite3_close(db);}rc=sqlite3_exec(db,argv[2],callback,0,&zErrMsg);if(rc!=SQLITE_OK){fprintf(stderr,SQLerror:%s\n,zErrMsg);}sqlite3_close(db);return0;}使用如下命令编译测试程序:arm-linux-gcctest.c-L.libs-I/root/sqlite-3.3.6/build-lsqlite3-static解释-I指向静态库sqlite3.a所在目录,-I指向sqlite3.h所在目录c、在超级终端下测试[rootL-ant]#./test_sqlitetest.dbselect*fromfilmnumber=1name=aaanumber=2name=bbb[rootL-ant]#到目前为止所有测试和移植就完成了。如有问题,错误请留言。参考文献:本文出自“脚踏实地、求真务实”博客,请务必保留此出处

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功