2011-03-07 52 views
1

我已经下载了sqlite3源码,并且试图在我的一些应用程序中使用sqlite3来制作一个瘦C++包装器。但我得到的sqlite3.c编译自定义C++包装sqlite3

在我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 [email protected]
.cpp.o:
\t $(CPP) $(CFLAGS) &< -o [email protected]
.c.o:
\t $(CC) $(CFLAGS) &< -o [email protected]
clean:
\t rm -rf *o $(EXECUTABLE)

那么我的Makefile中缺少的是什么?或者别的地方..我需要一些链接器选项吗?

TX,
活跃

+0

请给出您看到的错误消息的一些示例。 – JeremyP 2011-03-07 20:24:43

+0

提示:确保在构建http://www.sqlite.org/amalgamation.html – 2011-03-07 21:28:49

回答

2

您需要的sqlite3的链接库,否则将无法正常工作。我没有看到任何-l参数。

此外,您不需要使用这些.cpp.o和.c.o Makefile命令。他们将由内置的自动规则处理。你只需要使用正确的标志变量。对于使用CFLAGS的C文件,对于使用CXXFLAGS的C++文件,在为您的LDFLAGS提供-l参数的链接步骤中使用。

+0

Tx时使用SQLite的合并版本,但是您能否给我一个您建议的解决方案示例? – aktivb 2011-03-08 11:35:01

0

在下载页面上有一个带有makefile的tarball。

http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz

创建库:

的./configure --prefix /你/自己的/目录
使
使安装

惠特这个 “Makefile文件” 提出的头和该目录中的库。

然后你可以链接像赞恩解释。