zoukankan      html  css  js  c++  java
  • Hisi开发板上 SQLite3.3.8移植

    SQLite3.3.8在Hisi3515/3520上的移植

    # tar zxvf sqlite-3.3.8.tar.gz
    解压抽取完成之后将会在/root目录下生成一个sqlite-3.3.8/子目录,在该目录中包含了编译所需要的所有源文件和配置脚本。SQLite3的所有源代码文件都位于sqlite-3.3.8/src/目录下。
    和在PC环境下编 译SQLite3不同,不能通过sqlite-3.3.8/目录下的configure脚本来生成Makefile文件。取而代之的是必须手动修改 Makefile文件。在sqlite-3.3.8/目录下有一个Makefile范例文件Makefile.linux-gcc。首先通过下面的命令拷 贝此文件并重命名为Makefile:
    # cp Makefile.linux-gcc Makefile
    接下来,用vim打开Makefile文件并手动修改Makefile文件的内容。首先找到Makefile文件中的下面这样一行:
    TOP = ../sqlite
    将其修改为:
    TOP = .
    找到下面这样一行:
    TCC = gcc -O6
    将其修改为:
    TCC = arm-hismall-linux-gcc -O6
    找到下面这样一行:
    AR = ar cr
    将其修改为:
    AR = arm-hismall-linux-ar cr
    找到下面这样一行:
    RANLIB = ranlib
    将其修改为:
    RANLIB = arm-hismall-linux-ranlib  
    找到下面这样一行:
    MKSHLIB = gcc -shared
    将其修改为:
    MKSHLIB = arm-hismall-linux-gcc -shared
    注释掉下面这一行:
    TCL_FLAGS = -I/home/drh/tcltk/8.4linux
    注释掉下面这一行:
    LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
    原则上,对 Makefile的修改主要包括两个方面:首先是将编译器、归档工具等换成交叉工具链中的对应工具,比如,gcc换成arm-hismall-linux-gcc,ar换 成arm-hismall-linux-ar,ranlib换成arm-hismall-linux-ranlib等等;其次是去掉与TCL相关的编译选项,因为默认情况下,将会编译 SQLite3的Tcl语言绑定,但是在移植到ARM-Linux的时候并不需要,因此将两个与TCL有关的行注释掉。对Makefile的修改总结如表 1所示。
    表1 Makefile修改情况
    位置
    原值
    修改为
    17行
    TOP = ../sqlite
    TOP = .
    73行
    TCC = gcc -O6
    TCC = arm-hismall-linux-gcc -O6
    81行
    AR = ar cr
    AR = arm-hismall-linux-ar cr
    83行
    RANLIB = ranlib
    RANLIB = arm-hismall-linux-ranlib
    86行
    MKSHLIB = gcc -shared
    MKSHLIB = arm-hismall-linux-gcc -shared
    96行
    TCL_FLAGS = -I/home/drh/tcltk/8.4linux
    #TCL_FLAGS = -I/home/drh/tcltk/8.4linux
    103行
    LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
    #LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
    接下来,还需要修改的一个的文件是main.mk,因为Makefile包含了这个文件。找到这个文件中的下面一行:
    select.o table.o tclsqlite.o tokenize.o trigger.o /
    把它替换成:
    select.o table.o tokenize.o trigger.o /
    也就是把该行上的tclsqlite.o去掉。这样编译的时候将不会编译SQLite3的Tcl语言绑定。
    自此,修改工作就完成了,接下来就可以开始编译SQLite3了,这通过make命令即可完成:
    # make
    编译完成之后,将在sqlite3.3.8/目录下生成库函数文件libsqlite3.a和头文件sqlite3.h,这就是所需要的两个文件了。

    将测试文件、libsqlite3.a和头文件sqlite3.h放到同一个文件夹下,静态编译
    arm-hismall-linux-gcc -I ./ -L ./ -o test test_sqlite.c -lsqlite3
    即可在hisi3515上运行,不要忘记在linux系统上安装sqlite sqlite3 libsqlite3-dev
  • 相关阅读:
    The type java.util.Map$Entry cannot be resolved. It is indirectly referenced。。.相似的错误
    ViewPager的使用
    mysql学习笔记 第九天
    mysql学习笔记 第八天
    mysql学习笔记 第七天
    mysql学习笔记 第六天
    mysql学习笔记 第五天
    Vue.js最佳实践(五招让你成为Vue.js大师)
    前端路由简介以及vue-router实现原理
    Maven整体认识——详细介绍
  • 原文地址:https://www.cnblogs.com/doctorqbw/p/2385281.html
Copyright © 2011-2022 走看看