Eclipse使用MinGW编译C++代码出现sqlite3库链接报错问题求助
解决MinGW下sqlite3库链接报错方案
报错核心原因是链接命令未加入sqlite3对应链接库参数,同时需确认使用的sqlite3库适配你安装的i686架构MinGW环境。你遇到的bad reloc address报错是链接器找不到符号后的衍生错误,解决sqlite3链接问题后会自动消失。
步骤1:确认sqlite3开发包适配当前MinGW环境
- 你使用的是i686(32位)版本MinGW-w64,必须安装对应32位的sqlite3预编译静态/动态库,不可使用64位版本库
- 确认
F:\MinGW\lib目录下存在libsqlite3.a(静态库)或libsqlite3.dll.a(动态库导入库),同时F:\MinGW\include目录下存在sqlite3.h头文件
步骤2:修改链接命令追加sqlite3链接参数
你当前使用的链接命令如下:
g++ -std=c++11 "-LF:\\MinGW\\lib" -o test.exe main.o -lpsapi -lpthread -lm -ldl
在命令末尾追加-lsqlite3参数,修改后命令如下:
g++ -std=c++11 "-LF:\\MinGW\\lib" -o test.exe main.o -lpsapi -lpthread -lm -ldl -lsqlite3
注意:链接参数顺序有严格要求,依赖库必须放在调用它的目标文件(此处为main.o)之后,不可提前放置。
步骤3:动态库场景补充操作
如果你链接的是动态版本的sqlite3库,需要将sqlite3.dll文件放到生成的test.exe同级目录,或者添加到系统PATH环境变量中,否则运行时会提示找不到dll文件。
可选:手动编译适配的sqlite3库
如果当前MinGW环境没有对应版本的sqlite3库,可以下载sqlite3 amalgamation源码包,用当前MinGW工具链手动编译:
- 解压源码包进入源码目录
- 执行以下命令编译静态库:
gcc -c sqlite3.c -O2 -o sqlite3.o ar rcs libsqlite3.a sqlite3.o
- 将生成的
libsqlite3.a移动到F:\MinGW\lib目录,sqlite3.h移动到F:\MinGW\include目录即可正常使用。
内容的提问来源于stack exchange,提问作者Richard
相关产品推荐
相关产品推荐

