zoukankan      html  css  js  c++  java
  • 移植sqlite

    一、参考文档

      1、SQLite安装、编译与应用

      2、gcc 生成 .a静态库和 .so动态库

    二、下载sqlite

      1、sqlite官方首页:https://www.sqlite.org/index.html

      2、How To Download Canonical SQLite Source Code 

      3、历史版本:History Of SQLite Releases

        1)步骤1:

          

         2)步骤2:

          

        3)步骤3:

          

      4、Google Chrome下载文件或网页时崩溃的解决办法

    三、交叉编译sqlite3.3.8

      1、编译静态库和可执行文件

        1.1 参考文档:

          1)linux下的sqlite3的编译安装 for arm

          2)sqlite-3.3.6编译安装与交叉编译全过程详细记录

          3)sqlite souce code目录下的README.md

        1.2  编译过程

         1.2.1 下载SQLite3.3.8.tar.gz(参照前面介绍办法)

         1.2.2 确认配置好了交叉编译器的路径,可以通过echo $PATH查看

         1.2.3 解压:

    tar -xvf SQLite3.3.8.tar.gz

         1.2.4 在解压目录下建立bld_3.3.8文件夹(即build目录),与sqlite sorce是同一级别目录

    mkdir bld_3.3.8

         1.2.5 在bld_3.3.8文件目录下运行配置命令

    ../SQLite3.3.8/configure --host=arm-linux --prefix=/home/cjb/share/usr  --disable-tcl

          --host=arm-linux意思是使用交叉编译器, --disable-tcl屏蔽tcl接口

          也可以输入:../SQLite3.3.8/configure  --help查看配置的帮助信息

          其配置过程中出现错误提示:

    configure: error: unable to find a compiler for building build tools  

        解决办法:结合configure.ac看了一下,原来是要设置config_TARGET_CC和config_BUILD_CC两个环境变量。config_TARGET_CC是交叉编译器,config_BUILD_CC是主机编译器

    export config_BUILD_CC=gcc 
    export config_TARGET_CC=arm-linux-gcc 

        然后,重新输入配置命令,结果提示如下错误:

    checking for /usr/include/readline.h... configure:  error: cannot check for file existence when cross compiling

        解决办法:readline我们已经编译过了,readline.h是肯定存在,没有必要检查。可在cache文件里设置ac_cv_header_readline_h=yes,骗过configure脚本:

    echo ac_cv_header_readline_h=yes >arm-linux.cache
    ../SQLite3.3.8/configure --host=arm-linux --prefix=/home/cjb/share/usr --cache-file=arm-linux.cache --disable-tcl

        1.2.5 这回配置成功了,会生成Makefile文件

        1.2.6 运行make命令

    make

          会生成sqlite3可执行文件及.libs文件夹(包含libsqlite3.a、libsqlite3.so等等)

        1.2.7运行make install命令

    make install

          会在前面定义的--prefix=/home/cjb/share/usr目录下生成三个文件夹:

        

       1.2.8 使用arm-linux-strip命令修剪可执行文件和静态库,删除内部的调试信息,这样可以减少文件大小

    arm-linux-strip -g sqlite3
    arm-linux-strip -g libsqlite3.a

      注意:在make命令之前,需要修改生成的Makefile文件,否则最后生成的可执行文件不能使用,修改如下:

    sqlite3$(TEXE):    $(TOP)/src/shell.c libsqlite3.la sqlite3.h
        $(LTLINK) $(READLINE_FLAGS) $(LIBPTHREAD) 
            -o $@ $(TOP)/src/shell.c libsqlite3.la 
            $(LIBREADLINE) $(TLIBS)
    改为:
    sqlite3$(TEXE):    $(TOP)/src/shell.c .libs/libsqlite3.a sqlite3.h
        $(LTLINK) $(READLINE_FLAGS) $(LIBPTHREAD) 
            -o $@ $(TOP)/src/shell.c .libs/libsqlite3.a 
            $(LIBREADLINE) $(TLIBS)

      即把libsqlite3.la替换成.libs/libsqlite3.a

      因为运行时都是将SQlite放到Arm-linux的硬件板子上运行,所以一般将其编译成静态链接的形式。  

    四、交叉编译sqlite3.28.0

      

      1.2.1 下载SQLite3.28.0.tar.gz(参照前面介绍办法)

      1.2.2 确认配置好了交叉编译器的路径,可以通过echo $PATH查看

        

      1.2.3 解压SQLite3.28.0.tar.gz

      1.2.4 在解压目录下建立bld文件夹(即build目录),与sqlite sorce是同一级别目录

      1.2.5 在bld文件目录下运行配置命令

    ../SQLite3.28.0/configure --host=arm-linux --prefix=/home/cjb/share/usr2 --disable-tcl

        生成Makefile文件,其--host=arm-linux意思是使用交叉编译器, --disable-tcl屏蔽tcl接口

      1.2.6 运行make命令

        生成可执行文件sqlite3和.libs文件夹

      1.2.7运行make install命令

        会在前面定义的--prefix=/home/cjb/share/usr目录下生成三个文件夹:bin、include、lib

      1.2.8 使用arm-linux-strip命令修剪可执行文件和静态库,删除内部的调试信息,这样可以减少文件大小

    arm-linux-strip -g sqlite3
    arm-linux-strip -g libsqlite3.a

    arm-linux-strip工具后面所跟的参数含义不同:

               -g         去除调试符号信息

               -strip-all    移除所有的符号信息

    注意:如果不加-g,会导致后面编译应用程序出错,找不到函数,截图如下:

    五、libtool的使用

      1、参考文件:

        1)使用 GNU Libtool 创建库(IBM)

    六、编译心得

      1、如果用交叉编译器编译一直不成功,而用计算机自带的编译器则 编译成功,可以尝试换一个版本重新编译,节省时间

  • 相关阅读:
    Node.js理解
    PayPal为什么从Java迁移到Node.js
    移动开发技巧总结
    Flex性能调优相关的一些总结
    Flex组件的生命周期
    Adobe Flash Builder 4.7 新功能详解
    【Django】Cookie
    【Django】路由系统
    【Django】视图系统
    【Django】ORM操作#2
  • 原文地址:https://www.cnblogs.com/shanyu20/p/11003215.html
Copyright © 2011-2022 走看看