sqlite3을 사용하는 C++ 프로그램을 컴파일하려고합니다.C++ 컴파일 문제, sqlite3
CXX = g++
CC = gcc
CFLAGS = -c -O2
CXXFLAGS = -Wall -O3 -std=c++11
SQLFLAGS = -DSQLITE_THREADSAFE=0
OUTPUTBIN = bot
OUTPUTDIR = ./bin/
MKDIR = mkdir -p $(OUTPUTDIR)
OBJECTC = sqlite3.o
CSOURCES = sqlite3.c
CXXSOURCES = main.cpp bot.cpp
all: project
project: createdir sql compilecpp
createdir:
$(MKDIR)
sql:
$(CC) $(CSOURCES) $(SQLFLAGS) $(CFLAGS) -o $(OUTPUTDIR)$(OBJECTC)
compilecpp:
$(CXX) $(OUTPUTDIR)$(OBJECTC) $(CXXSOURCES) $(CXXFLAGS) -o $(OUTPUTDIR)$(OUTPUTBIN)
을하지만 이러한 오류를 출력합니다 :이 메이크 파일을 사용하고
[email protected] ~/Documents/Proletarian/c++ $ make
mkdir -p ./bin/
gcc sqlite3.c -DSQLITE_THREADSAFE=0 -c -O2 -o ./bin/sqlite3.o
g++ ./bin/sqlite3.o main.cpp bot.cpp -Wall -O3 -std=c++11 -o ./bin/bot
./bin/sqlite3.o: In function `unixDlError':
sqlite3.c:(.text+0x170f4): undefined reference to `dlerror'
./bin/sqlite3.o: In function `unixDlClose':
sqlite3.c:(.text+0x5de9): undefined reference to `dlclose'
./bin/sqlite3.o: In function `unixDlSym':
sqlite3.c:(.text+0x5e01): undefined reference to `dlsym'
./bin/sqlite3.o: In function `unixDlOpen':
sqlite3.c:(.text+0x5e21): undefined reference to `dlopen'
collect2: error: ld returned 1 exit status
make: *** [compilecpp] Error 1
나는이 원인을 무엇으로 매우 혼란 스러워요. 나는 sqlite3가 C 프로그램임을 알 수있다.하지만 문제가 발생할 것이라고 생각하지는 않는다.
추가'당신의 링커 명령 행에 -ldl'. –
인터넷 검색 'dlerror undefined symbol'은 첫 번째 조회수로 http://stackoverflow.com/questions/956640/linux-c-error-undefined-reference-to-dlopen을 반환합니다. – CiaPan
둘 다 감사합니다. @CiaPan도이 사실을 발견했으나, 제 메이크 파일에 추가하는 방법이나 내 문제와 관련이 있는지는 확실하지 않았습니다. 저는 C++을 처음 접했으므로 다른 어떤 것보다 더 많은 문제가 될 것입니다. –