加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 20:43:33 所属栏目:百科 来源:网络整理
导读:(注:摘自网上资料和书籍资料,自己亲自移植过,成功!) 环境:虚拟机+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-

(注:摘自网上资料和书籍资料,自己亲自移植过,成功!)

环境:虚拟机+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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读