【嵌入式】——SQLite-2.8.17在FL2440上的移植(redhat9.0 linux)

前端之家收集整理的这篇文章主要介绍了【嵌入式】——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

原文链接:https://www.f2er.com/sqlite/202626.html

猜你在找的Sqlite相关文章