无法在 linux (i686-w64-mingw32-g++) 上交叉编译包含 sqlite(未定义引用)的 c++ class

Can't cross compile c++ class with sqlite included (undefined reference) on linux (i686-w64-mingw32-g++)

我尝试使用 sqltie3 include 编译我的 c++ class。
我运行Ubuntu20.04.
为此,我使用 i686-w64-mingw32-g++ 交叉编译器,我还使用 g++ 对其进行了测试,它可以完美运行,但不能与 i686-w64-mingw32-g++ 编译器一起使用。

我总是得到同样的错误:

/usr/bin/i686-w64-mingw32-ld: DBWrapper.o:DBWrapper.cpp:(.text+0x61): undefined reference to `sqlite3_open'
/usr/bin/i686-w64-mingw32-ld: DBWrapper.o:DBWrapper.cpp:(.text+0x12c): undefined reference to `sqlite3_close'

我的生成文件:

mingw       = i686-w64-mingw32-g++
SQLCOMPILE  = -I/usr/local/sqlite/include
CFLAGS      = -Wall
SRCFILES    = *.cpp
OBJFILES    = *.o
TARGETWIN   = progwx.exe

all: $(TARGETWIN)

    
$(TARGETWIN): $(OBJFILES)
    $(mingw) $(CFLAGS) $(OBJFILES) $(SQLCOMPILE) -o $(TARGET) -l sqlite3
    
$(OBJFILES): $(SRCFILES)
    $(mingw) $(CFLAGS) $(SQLCOMPILE) -c $(SRCFILES)
    
.PHONY: clean

clean:
    rm -f *.o

我将 sqlite 源代码放在 $(SQLCOMPILE) 中,编译器可以包含所有内容,除非我调用 sqlite3_open() 函数。 我还把源代码编译成一个库(libsqlite3.a),这样-l标签就可以找到它。
因为如果我不放入 -lsqlite3 标签,g++ 编译器也会带来同样的“未定义引用”错误。

$ i686-w64-mingw32-gcc -c sqlite3.c  
$ ar rcs libsqlite3.a sqlite3.o

这是我的头文件 (DBWrapper.h):

#pragma once
#include <string>
#include <stdexcept>
#include <sqlite3.h>

class DBWrapper {
    sqlite3 *db_;
    const int errCode;
public:
    DBWrapper(const std::string &dbname);
    DBWrapper(const DBWrapper&) = delete;
    DBWrapper& operator=(const DBWrapper&) = delete;
    sqlite3* operator*();
    ~DBWrapper();
};

这是我的 CPP 文件 (DBWrapper.cpp):

#include "DBWrapper.h"


DBWrapper::DBWrapper(const std::string &dbname) : db_(nullptr), errCode(sqlite3_open(dbname.c_str(), &db_)){
    if(errCode) {
        throw std::runtime_error("ERROR at opening database!");
    }
}

DBWrapper::~DBWrapper() {
    sqlite3_close(db_);
}

sqlite3* DBWrapper::operator *() {
    return db_;
}

(抱歉我的英语不好)

我发现我只需要 sqlite3 作为编译器的编译目标文件 (sqlite3.o)。