我已经下载了sqlite3源代码,我正在尝试制作一个瘦c ++包装器,以便在我的某些应用程序中使用sqlite3。但是我在sqlite3.c中得到了一个未定义引用的列表
在我的database.hpp中,我有c包括:
extern "C" {
#include "sqlite3.h"
}
我的makefile如下所示:
CC=gcc -g
CPP=g++ -g
CFLAGS=-c -Wall -ggdb
CPPSOURCES=$(wildcard *.cpp)
CSOURCES=$(wildcard *.c)
OBJECTS=$(CPPSOURCES:.cpp=.o) $(CSOURCES:.c=.o)
EXECUTABLE=testdb
all: $(CPPSOURCES) $(CSOURCES) $(EXECUTABLE)
$(EXECUTABLE): $(OBJECTS)
\t $(CPP) $(OBJECTS) -o $@
.cpp.o:
\t $(CPP) $(CFLAGS) &< -o $@
.c.o:
\t $(CC) $(CFLAGS) &< -o $@
clean:
\t rm -rf *o $(EXECUTABLE)
那我的Makefile中缺少什么?或者其他地方..我需要一些链接器选项吗?
TX,
活跃
答案 0 :(得分:2)
您需要链接sqlite3库,否则它将无法正常工作。我没有看到任何-l
参数。
此外,您无需使用.cpp.o和.c.o Makefile命令。它们将由内置的自动规则处理。您只需要使用正确的标志变量。对于C文件,您使用CFLAGS,对于使用CXXFLAGS的C ++文件,在链接步骤中为LDFLAGS提供-l
参数。
答案 1 :(得分:0)
在下载页面上有一个带有makefile的tarball。
http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz
创建库:
./ configure --prefix / your / own / directory
使
make install
使用“makefile”,将标题和库放在该目录中。
然后你可以像Zan解释的那样链接。