2011-03-07 53 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文件」 提出的頭和該目錄中的庫。

然後你可以鏈接像贊恩解釋。