компиляция пользовательской оболочки C ++ sqlite3 - PullRequest
1 голос
/ 07 марта 2011

Я скачал исходный код sqlite3 и пытаюсь создать тонкую оболочку c ++ для использования sqlite3 в некоторых своих приложениях.Но я получаю список неопределенных ссылок в sqlite3.c

. В моем database.hpp у меня есть c:
extern "C" {
#include "sqlite3.h"
}

Мой make-файл выглядит так:
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,
aktiv

Ответы [ 2 ]

2 голосов
/ 07 марта 2011

Вам нужно связать библиотеку sqlite3, иначе она не будет работать. Я не вижу никаких -l параметров.

Кроме того, вам не нужно использовать эти команды .cpp.o и .c.o Makefile. Они будут обрабатываться встроенными автоматическими правилами. Вам просто нужно использовать правильные переменные флага. Для файлов C, которые вы используете CFLAGS, для файлов C ++ вы используете CXXFLAGS, для шага связи вы предоставляете LDFLAGS с параметром -l.

0 голосов
/ 07 марта 2011

На странице загрузки есть архив с make-файлом.

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

Чтобы создать библиотеку:

. / Configure --prefix / your /own / directory
make
make install

При этом «makefile» помещает заголовки и библиотеки в этот каталог.

Затем вы можете связать, как объясняет Зан.

...