c++(windows\linux交叉编译)编译sqlite源码

下载源码
在这里插入图片描述
一.linux平台
(1)x86_64
进入sqlite-autoconf-3350500目录执行

./configure CC=gcc AR=gcc-ar
make clean && make

即可在lib文件中得到libsqlite3.a和libsqlite3.so
(2)i686
理论上只需要在./configure中执行CFLAGS=-m32即可,但是这样会报错,提示需设置host,最简单方法是x86_64编译完成后,直接打开生成的Makefile文件,找到

CFLAGS = -g -O2

这一行,然后在后面添上-m32,再执行make即可。
出现错误:

libtool: link: gcc -shared  -fPIC -DPIC  .libs/sqlite3.o -lz -lm -ldl -lpthread  -g -O2 -m32   
-Wl,-soname -Wl,libsqlite3.so.0 -o .libs/libsqlite3.so.0.8.6       
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libz.so when searching for -lz
/usr/bin/ld: skipping incompatible //usr/lib/x86_64-linux-gnu/libz.a when searching for -lz  
/usr/bin/ld: cannot find -lz   
collect2: error: ld returned 1 exit status    
Makefile:452: recipe for target 'libsqlite3.la' failed                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

缺少lib32z1-dev。这里使用的是ubuntu环境,执行:

sudo apt-get install lib32z1-dev    

然后重新make即可。

(3)armel

./configure CC=arm-linux-gnueabi-gcc AR=arm-linux-gnueabi-gcc-ar --host=arm-linux-gnueabi
make clean && make

(4)armhf

./configure CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-gcc-ar --host=arm-linux-gnueabihf
make clean && make

(5)aarch64

./configure CC=aarch64-linux-gnu-gcc AR=aarch64-linux-gnu-gcc-ar --host=aarch64-linux-gnu
make clean && make

二.windows
由于下载的autoconf sqlite,依赖tcl,所以首先需要安装tcl。
安装地址:https://www.activestate.com/products/tcl/downloads/
打开VS2017,新建解决方案,在解决方案下新建动态库和静态库两个项目,每个项目均将下载的源码中的:

sqlite3.c、sqlite3.h

这2个文件添加到项目源文件。然后设置平台、RANLIB(属性—C/C++—代码生成—运行库,静态库对应MT/MTd,动态库对应MD/MDd)等分别编译即可。
如果报错:

在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h”

右键-属性-C/C+±预编译头-不使用预编译头即可

三.android NDK
可以直接将源码加到项目中编译到程序即可。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值