| 윈 토토 : 문서 : 9.4 : 윈 토토 | |||
|---|---|---|---|
| 이전 | 위로 | 31장.토토 캔- C 라이브러리 | 다음 |
다음을 사용하여 프로그램을 빌드(즉, 컴파일 및 링크)하려면토토 캔다음 작업을 모두 수행해야 합니다.
포함토토 캔-fe.h헤더 파일:
#include <토토 캔-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'가 선언되지 않았습니다(이 함수에서 처음 사용됨)
컴파일러가 다음이 있는 디렉토리를 가리킵니다.포스트그레SQL헤더 파일은 다음을 제공하여 설치되었습니다.-나디렉토리옵션을 컴파일러에 추가하세요. (어떤 경우에는 컴파일러가 기본적으로 문제의 디렉터리를 조사하므로 이 옵션을 생략할 수 있습니다.) 예를 들어 컴파일 명령줄은 다음과 같습니다.
cc -c -I/usr/local/pgsql/include testprog.c
만약 makefile을 사용하고 있다면 다음 옵션을 추가하세요.CPPFLAGS변수:
CPPFLAGS += -I/usr/local/pgsql/include
당신의 프로그램이 다른 사용자에 의해 컴파일될 가능성이 있다면 디렉토리 위치를 그런 식으로 하드코딩해서는 안 됩니다. 대신 유틸리티를 실행할 수 있습니다.pg_config로컬 시스템에서 헤더 파일이 어디에 있는지 알아내기 위해:
$pg_config --includedir/usr/local/include
있다면pkg-config설치되었으므로 대신 실행할 수 있습니다.
$pkg-config --cflags 토토 캔-I/usr/로컬/포함
여기에는 이미 다음이 포함됩니다.-나경로 앞.
컴파일러에 올바른 옵션을 지정하지 못하면 다음과 같은 오류 메시지가 나타납니다:
test토토 캔.c:8:22: 토토 캔-fe.h: 해당 파일이나 디렉터리가 없습니다
최종 프로그램을 연결할 때 옵션을 지정하십시오.-lpq그래서토토 캔라이브러리와 옵션을 가져옵니다-L디렉토리컴파일러가 다음이 있는 디렉토리를 가리킵니다.토토 캔도서관이 상주합니다. (다시 말하지만, 컴파일러는 기본적으로 일부 디렉토리를 검색합니다.) 이식성을 극대화하려면 다음을 입력하세요.-L옵션 이전-lpq옵션. 예를 들면:
cc -o testprog testprog1.o testprog2.o -L/usr/local/pgsql/lib -lpq
다음을 사용하여 라이브러리 디렉토리를 찾을 수 있습니다.pg_config또한:
$pg_config --libdir/usr/local/pgsql/lib
또는 다시 사용pkg-config:
$pkg-config --libs 토토 캔-L/usr/local/pgsql/lib -lpq
이것은 경로뿐만 아니라 전체 옵션을 인쇄한다는 점을 다시 한 번 참고하십시오.
이 영역의 문제를 가리키는 오류 메시지는 다음과 같습니다:
test토토 캔.o: 'main' 함수에서: test토토 캔.o(.text+0x60): `PQsetdbLogin'에 대한 정의되지 않은 참조 test토토 캔.o(.text+0x71): `PQstatus'에 대한 정의되지 않은 참조 test토토 캔.o(.text+0xa4): `PQerrorMessage'에 대한 정의되지 않은 참조
이것은 당신이 잊어버렸다는 뜻입니다-lpq.
/usr/bin/ld: -lpq를 찾을 수 없습니다.
이것은 당신이 다음을 잊어버렸다는 뜻입니다.-L옵션이거나 올바른 디렉토리를 지정하지 않았습니다.
| 이전 | 윈 토토 : 문서 : 9.4 : 윈 토토 9.4.26 문서화 | 다음 |
| 스레드 프로그램의 동작 | 위로 | 예제 프로그램 |