SQLite 交叉编译

交叉编译 SQLite

交叉编译工具链

交叉编译工具链 gcc-arm-linux-gnueabi

sudo apt-get install gcc-arm-linux-gnueabi

其他交叉编译工具链修改 ${CROSS_CHAIN_PREFIX}。

一键编译脚本

新建文件 build_sqlite.sh,拷贝如下内容:

#!/bin/sh

HOST=arm-linux-gnueabi
SCRIPT_PATH=$(pwd)

#修改源码包解压后的名称
#包名sqlite-autoconf-3350500.tar.gz
MAJOR_NAME=sqlite-autoconf

#修改需要下载的源码前缀和后缀
OPENSRC_VER_PREFIX=335
OPENSRC_VER_SUFFIX=0500

PACKAGE_NAME=${MAJOR_NAME}-${OPENSRC_VER_PREFIX}${OPENSRC_VER_SUFFIX}

#定义压缩包名称
COMPRESS_PACKAGE=${PACKAGE_NAME}.tar.gz

#定义编译后安装--生成的文件,文件夹位置路径
INSTALL_PATH=/opt/${MAJOR_NAME}

#交叉编译工具
CROSS_CHAIN_PREFIX=arm-linux-gnueabi

#下载地址
#https://www.sqlite.org/2021/sqlite-autoconf-3350500.tar.gz
DOWNLOAD_LINK=https://www.sqlite.org/2021/${COMPRESS_PACKAGE}

#下载源码包
do_download_src () {
    echo "\033[1;33mstart download ${PACKAGE_NAME}...\033[0m"

    if [ ! -f "${COMPRESS_PACKAGE}" ];then
        if [ ! -d "${PACKAGE_NAME}" ];then
            wget -c ${DOWNLOAD_LINK}
        fi
    fi

    echo "\033[1;33mdone...\033[0m"
}

#解压源码包
do_tar_package () {
    echo "\033[1;33mstart unpacking the ${PACKAGE_NAME} package ...\033[0m"
    if [ ! -d "${PACKAGE_NAME}" ];then
        tar -xf ${COMPRESS_PACKAGE}
    fi
    echo "\033[1;33mdone...\033[0m"
    cd ${PACKAGE_NAME}
}

#配置选项
do_configure () {
    echo "\033[1;33mstart configure ${PACKAGE_NAME}...\033[0m"

    export CC=${CROSS_CHAIN_PREFIX}-gcc

    ./configure \
    --prefix=${INSTALL_PATH} \
    --host=${HOST}

    echo "\033[1;33mdone...\033[0m"
}


#编译并且安装
do_make_install () {
    echo "\033[1;33mstart make and install ${PACKAGE_NAME} ...\033[0m"
    make && make install
    echo "\033[1;33mdone...\033[0m"
}

#删除下载的文件
do_delete_file () {
    cd ${SCRIPT_PATH}
    if [ -f "${PACKAGE_NAME}" ];then
        sudo rm -f ${PACKAGE_NAME}
    fi
}

do_download_src
do_tar_package
do_configure
do_make_install
# do_delete_file

exit $?

执行脚本即可完成一键交叉编译SQLite。

脚本执行过程,首先去SQLite官网下载SQLite源码,然后解压,配置,配置编译环境,make&make
install。

安装路径在 INSTALL_PATH=/opt/${MAJOR_NAME},可自定义修改。

测试程序

新建文件 sqlite_test.c,拷贝如下内容:

#include 
#include 
#include 

int main(int argc,char *argv[])
{
    sqlite3 *db;
    char *ErrMsg = 0;
    int rc;

    rc = sqlite3_open("./test.db",&db);
    if(rc){
        fprintf(stderr, "无法打开数据库:%s\n", sqlite3_errmsg(db));
        exit(0);
    }
    else
    {
        fprintf(stderr, "成功打开数据库!\n");

    }
    sqlite3_close(db);
}

交叉编译测试程序,需指定sqlite.h目录和lib目录

arm-linux-gnueabi-gcc sqlite_test.c -o sqlite_test -I /opt/sqlite-autoconf/include -L /opt/sqlite-autoconf/lib -lsqlite3

将程序放到ARM环境执行,最终会产生一个test.db的数据库。

原文链接

https://taotaodiy-linux.readthedocs.io/en/latest/sql/crosssqlite.html

你可能感兴趣的:(#,Linux,sqlite3,交叉编译)