2013-10-11 4 views
0

C++로 PostgreSQL 프로그램을 컴파일하면 이러한 오류가 발생합니다. 아무도 저에게 그 이유를 말할 수 있습니까?PostgreSQL 프로그램을 컴파일 할 수 없습니다.

[email protected]:~/WorkDir/Program> g++ test.cpp -lpqxx -I/usr/local/include -I/usr/local/pgsql/include 

/usr/local/lib/libpqxx.a(util.o): In function `pqxx::describe_thread_safety()': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/util.cxx:69: undefined reference to `PQisthreadsafe' 
/usr/local/lib/libpqxx.a(util.o): In function `pqxx::internal::freepqmem(void const*)': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/util.cxx:195: undefined reference to `PQfreemem' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::internal::result_data::~result_data()': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:55: undefined reference to `PQclear' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::size() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:101: undefined reference to `PQntuples' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::empty() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:107: undefined reference to `PQntuples' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::CmdStatus() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:241: undefined reference to `PQcmdStatus' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::inserted_oid() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:256: undefined reference to `PQoidValue' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::affected_rows() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:262: undefined reference to `PQcmdTuples' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::GetIsNull(unsigned long, unsigned int) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:279: undefined reference to `PQgetisnull' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::GetLength(unsigned long, unsigned int) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:286: undefined reference to `PQgetlength' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::errorposition() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:344: undefined reference to `PQresultErrorField' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::ThrowSQLError(std::string const&, std::string const&) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:132: undefined reference to `PQresultErrorField' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::columns() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:363: undefined reference to `PQnfields' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::column_name(unsigned int) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:353: undefined reference to `PQfname' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::table_column(unsigned int) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:318: undefined reference to `PQftablecol' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::StatusError() const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:214: undefined reference to `PQresultStatus' 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:233: undefined reference to `PQresultStatus' 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:228: undefined reference to `PQresultErrorMessage' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::column_table(unsigned int) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/result.cxx:303: undefined reference to `PQftable' 
/usr/local/lib/libpqxx.a(result.o): In function `pqxx::result::column_type(unsigned int) const': 

/usr/local/lib/libpqxx.a(connection.o): In function `pqxx::connect_direct::do_startconnect(pg_conn*)': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/connection.cxx:94: undefined reference to `PQstatus' 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/connection.cxx:96: undefined reference to `PQerrorMessage' 
/usr/local/lib/libpqxx.a(tuple.o): In function `pqxx::result::column_number(char const*) const': 
/home/user/WorkDir/Program/Connections/libpqxx-4.0/src/tuple.cxx:194: undefined reference to `PQfnumber' 
collect2: error: ld returned 1 exit status 

답변

1

당신은 libpq 자체를 연결하는 GCC에 옵션으로 -lpq를 추가해야합니다. 그것은 -lpqxx 후 가고 있습니다

libpqxx으로 필요
g++ test.cpp -lpqxx -lpq -I/usr/local/include -I/usr/local/pgsql/include 
#     ^^^^ here 

그냥 PostgreSQL를위한 실제 클라이언트 라이브러리입니다 libpq의 C 인터페이스 주위에 C++ 래퍼입니다. 시스템의 라이브러리 경로에 -lpq이 없으면 -L/path/to/libpq을 추가해야 할 수도 있습니다.

+0

@Sameera 물론이 기능이 작동하려면 시스템에 'libpq'가 설치되어 있어야한다는 점을 잊어 버렸습니다. 패키지 관리자를 사용하여 패키지를 찾아서 설치합니다. 내 시스템 (Ubuntu)에서 패키지는'libpq-dev'라고합니다. –

+0

언급 한 모든 내용이 정확합니다. 이것은 나를 위해 일했다. 감사 :) – Sameera

관련 문제