SQLite 入门笔记(二)

1. 前言
本文接上一篇博客 https://blog.csdn.net/qq_43006850/article/details/99287763
在上一篇博客中我讲了怎样在 ubuntu 上使用 sqlite3, 主要是为了熟悉它的使用。最终的目的是要在开发板上运行我写的 SQL c 语言程序。本博客就是讲怎样在开发板上运行自己写的 sqlite c 语言程序。

2. 思路
首先要下载 sqlite3 的源码,然后配置编译生成相应的 sqlite3 应用程序和库文件。第一种方法是在 Ubuntu 下编译自己写的 c 源码,链接到 sqlite3 的动态库。然后把该动态库拷贝到开发板文件系统 /lib 目录下,就可在开发板上运行自己的 c 语言程序了。
第二种法是在 ubuntu 下编译自己写的 c 源码, 链接到 sqlite3 的静态库,就可以直接在开发板上运行自己写的 c 语言程序了。
链接动态库可以参考以下博客(链接动态库需要文件系统分配有足够的存储空间)
https://blog.csdn.net/wofeile880_jian/article/details/77855912
我这边采用的是链接静态库,部门老大给了个样板,是链接静态库。直接指定链接静态库不易操作,这边使用了一个Makefile.

3. 具体操作步骤
step1 下载 sqlite3 源码。进入官网 https://www.sqlite.org/download.html 下载 sqlite-autoconf-3290000.tar.gz
step2 在 Ubuntu下解压 tar -xzvf sqlite-autoconf-3290000.tar.gz
step3 进入解压后的目录 sqlite-autoconf-3290000,创建一个新的目录用存放生成的 sqlite3 相关文件。比如, mkdir usr;
step4 配置编译选项
./configure --host=arm-himix200-linux --prefix=/home/myth/share/ipc_workdir/16CV500/sqlite-autoconf-3290000/usr CFLAGS="-mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -fno-aggressive-loop-optimizations"
–host: 指定交叉编译工具,一般为arm-linux、arm-linux-gnueabihf、arm-none-linux-gnueabi等,具体要和板子用的交叉编译工具对应。
–prefix: 指定安装目录,编译后的文件会全部放在安装目录中。必须是绝对路径。
–CFLAGS 参数不加应该也可以,我看不少博客就没加。这里可能是为了适配海思开发板,具体什么意思不清楚。老大给的直接用。
step5 开始编译安装
make
make install
安装完成后,./usr 目录下应该就有了 sqlite3 的相关文件了,如下图所示
在这里插入图片描述
step6 把 ./usr 目录考到一个新的目录,在该目录下存放一个 Makefile 和自己写的 .c 文件如下图所示。
Makefile 在后面给出,大部分注释已添加,少部分我自己也不懂。
在这里插入图片描述
4. 用来链接静态库的Makefile

CROSS ?= arm-himix200-linux-
CC:=$(CROSS)gcc
AR:=$(CROSS)ar
STRIP:= $(CROSS)strip

RM := rm
# here, -ldl means load dynamic library explicitly if the functoins (dlopen、dlsym、dlclose、dlerror) are used in your code
# -Wall means show all warnings 
# optimization level
CFLAGS := -Wall -ldl
CFLAGS += -DUSER_BIT_32 -DKERNEL_BIT_32
CFLAGS += -Os
# for hisicon 
CFLAGS += -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4 -fno-aggressive-loop-optimizations

EXTERN_LIBS:=./usr/lib/libsqlite3.a
EXTERN_INC:=-I./usr/include/
# wildcard 展开变量引用时的通配符;一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c文件列表
SRC:= $(wildcard *.c)
# 把变量 SRC 里所有的 .c 文件替换为 .o 文件
OBJ:= $(SRC:%.c=%.o)
TARGET = sqlite_test

all: $(TARGET)

# -c here means Compile or assemble the source files, but do not link
# $< means the first prerequisites of the rules,
# $@ means the target
%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@ $(EXTERN_INC)

.PHONY: clean
# $^ all prerequisites
$(TARGET): %: $(OBJ)
	$(CC)  $(CFLAGS) -o $@ $^ $(EXTERN_LIBS) -lstdc++ -lpthread -lm -lrt
	#-lsqlite3
    #$(STRIP) $(TARGET)

clean:
	rm -f *.o $(TARGET)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值