【嵌入式】——SQLite-2.8.17在FL2440上的移植(redhat9.0 linux
(注:摘自网上资料和书籍资料,自己亲自移植过,成功!) 环境:虚拟机+Redhat 9.0 linux 软件:sqlite-2.8.17.tar.gz、cross-2.95.3.tar.gz 步骤: 一、安装交叉编译器 将cross-2.95.3.tar.gz复制到:/usr/src/目录下,用下面命令进行解压: #tar -zxvf cross-2.95.3.tar.gz 解压后在目录下出现一个名为“2.95.3”的目录; 然后配置交叉编译器的默认路径: #export PATH=$PATH:/usr/src/2.95.3/bin #source /etc/profile (让上已命令生效) #arm-linux-gcc --version (输入该命令后,如果正确配置好交叉编译工具的路径,应该会显示出版本号) 二、 1、解压源码包 将sqlite-2.8.17.tar.gz复制到:/usr/src/目录下,解压 #tar -zxvf sqlite-2.8.17.tar.gz 之后会生成sqlite-2.8.17目录 2、修改sqliteInt.h文件 在sqlite-2.8.17/src/目录里,有个sqliteInt.h的头文件,里面指定SQLITE_PTR_SZ的值为4,是btree(B树)有正确的变量大小,否则在ARM开发板上执行时会出现如下问题: 在文件btree.c中抛出断言“assert(sizeof(ptr) == sizeof(char *));” 应对该头文件进行修改,用vi或其他编辑器打开sqliteInt.h,在 #if SQLITE_PTR_SZ==4 #define INTPTR_TYPE int #else #define INTPTR_TYPE long long #endif 的上面添加如下语句: #define SQLITE_PTR_SZ 4 然后保存退出。 3、修改configure文件 configure文件在sqlite-2.8.17/目录下。修改该文件主要是使其不检查交叉编译环境,之后执行configure命令,产生Makefile文件。 主要注释掉:(在vi的命令模式下,直接输入行数,然后回车即可,如“:19153按回车”) 19153行-19157行 19989行-19995行 20001行 20392行-20398行 20418-20424行 20430行 4、生成Makefile文件 在/usr/src/目录下新建一个目录 #mkdir armsqlite #cd armsqlite #../sqlite-2.8.17/configure -disable-tcl -host=arm-linux 如果没有出现错误这回生成Makefile等文件,如果出现不能找到C编译器,则换一个高版本的交叉编译器。 5、修改Makefile文件 进入Makefile文件,找到: BCC = arm-linux-gcc -g -O2 改为: BCC = gcc -g -O2 因为其编译生成的可执行文件要在宿主机上运行。 由于编译生成的可执行文件sqlite要在ARM开发板上执行,因此将后面指定生成的库libssqlite.la改为libsqlite.a,即编译成静态链接的形式。 找到“all”,然后将后面的所有libsqlite.la 改为 libsqlite.a(注:libtclsqlite.la不要改) 修改后保存退出。 6、在armsqlite目录下执行如下命令: #make clean #make 然后就会在该目录下生成所需要的sqlite可执行程序等相关文件 通过挂载或者其他什么方法将该目录拷到开发板下的某个目录里 然后执行: #./sqlite ex1 如果出现如下: SQLite version 2.8.17 Enter “./help” for instructions sqlite> 则移植基本上成功了 然后测试下, sqlite>create table tb11(one varchar(10),two smallint);(如果在输入该句会出后出现错误,则按CTRL+Z后重新执行,ex1改为ex1.db) sqlite> insert into tb11 values('hello!',10); sqlite> insert into tb11 values('goodbye',20); sqlite> select * from tb11;(回车后出现如下结构,则移植成功了) hello! |10 goodbye |20 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |