이 문서는 지원되지 않는 버전의 토토을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 32.21. 토토 핫 프로그램 구축버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

30.19. 건물libpq프로그램

빌드 (즉, 컴파일 및 링크)를 사용하는 프로그램을 사용하여libpq다음을 모두 수행해야합니다 것들:

  • 포함libpq-fe.h헤더 파일:

    #include <libpq-fe.h

    그렇게하지 못하면 일반적으로 오류가 발생합니다. 컴파일러의 메시지와 유사한 :

    foo.c : 함수`main ':
    foo.c : 34 :`pgconn '선고되지 않은 (이 기능의 첫 번째 사용)
    foo.c : 35 :`pgresult '선고되지 않은 (이 기능에서 처음 사용)
    foo.c : 54 :`connection_bad '선고되지 않은 (이 기능에서 처음 사용)
    foo.c : 68 :`pgres_command_ok '선언되지 않은 (이 기능에서 처음 사용)
    foo.c : 95 :`pgres_tuples_ok '노출되지 않은 (이 기능에서 처음 사용)
  • 컴파일러를 디렉토리에 가리 킵니다토토헤더 파일이있었습니다 설치, 공급-i디렉토리컴파일러 옵션. (경우에 따라 컴파일러는 디렉토리를 조사합니다. 기본적으로 질문이 있으므로이 옵션을 생략 할 수 있습니다.) indest, 컴파일 명령 줄은 다음과 같이 보일 수 있습니다.

    CC -C -I/USR/local/pgsql/include testProg.c

    makefiles를 사용하는 경우 옵션을 추가하십시오CPPFLAGS변수 :

    cppflags += -i/usr/local/pgsql/conture

    프로그램이 컴파일 될 가능성이있는 경우 다른 사용자는 디렉토리를 하드 코딩해서는 안됩니다. 그런 위치. 대신 유틸리티를 실행할 수 있습니다PG_CONFIG헤더 파일의 위치를 ​​찾으려면 로컬 시스템 :

    $PG_CONFIG -includedir/usr/local/include
    

    컴파일러에 올바른 옵션을 지정하지 않음 다음과 같은 오류 메시지가 발생합니다.

    testlibpq.c : 8 : 22 : libpq-fe.h : 그러한 파일 또는 디렉토리가 없음
  • 최종 프로그램을 연결할 때 옵션을 지정하십시오-lpq그래서libpq라이브러리가 들어 오게됩니다 옵션-l디렉토리컴파일러를 가리키기 위해 디렉토리libpq라이브러리가 상주합니다. (다시, 컴파일러는 기본적으로 일부 디렉토리를 검색합니다.) 최대 이식성,-l전 옵션-lpq옵션. 을 위한 예:

    CC -O TestProg testProg1.o testprog2.o -l/usr/local/pgsql/lib -lpq

    를 사용하여 라이브러리 디렉토리를 찾을 수 있습니다PG_CONFIG또한 :

    $PG_CONFIG ---libdir/usr/local/pgsql/lib
    

    이 영역의 문제를 가리키는 오류 메시지는 다음과 같아요 :

    testlibpq.o : 함수`main ':
    testlibpq.o (.text+0x60) :`pqsetdblogin '에 대한 정의되지 않은 참조
    testlibpq.o (.text+0x71) :`pqstatus '에 대한 정의되지 않은 참조
    testlibpq.o (.text+0xa4) : 'pqerrormessage'에 대한 정의되지 않은 참조

    이것은 당신이 잊었다는 것을 의미합니다-lpq.

    /usr/bin/ld : 찾을 수 없습니다 -LPQ

    이것은 당신이 잊어 버린 것을 의미합니다-l옵션이거나 올바른 디렉토리를 지정하지 않았습니다.