编译自定义c ++包装器sqlite3

时间:2011-03-07 20:18:30

标签: c++ c sqlite makefile compilation

我已经下载了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,
活跃

2 个答案:

答案 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解释的那样链接。