※ ChatGPTを利用し、要約された質問です(原文:PostgreSQLをC言語でアクセスしようと)
C言語でPostgreSQLをアクセスする方法とコンパイルエラーの解決方法
このQ&Aのポイント
C言語を使用してPostgreSQLにアクセスする方法と、コンパイルエラーの解決方法について教えてください。
PostgreSQL 8.4.8のサンプルプログラムをC言語でコンパイルしようとしていますが、undefined referenceエラーが発生します。
gccコマンドを使用してコンパイルしてもエラーが解消されません。どのようにすれば解決できるでしょうか?
PostgreSQL 8.4.8 文書にのっているサンプルプログラムの
例 30-1. libpq サンプルプログラム 1
#include <stdio.h>
#include <stdlib.h>
#include "libpq-fe.h"
・・・・・・・・・・・・・
をコピペしてコンパイルしたところ次のようなエラーがでました
# gcc sample.c
/tmp/cctZBolQ.o: In function `exit_nicely':
sample.c:(.text+0xd): undefined reference to `PQfinish'
/tmp/cctZBolQ.o: In function `main':
sample.c:(.text+0x4a): undefined reference to `PQconnectdb'
sample.c:(.text+0x5a): undefined reference to `PQstatus'
sample.c:(.text+0x6a): undefined reference to `PQerrorMessage'
sample.c:(.text+0xa5): undefined reference to `PQexec'
sample.c:(.text+0xb5): undefined reference to `PQresultStatus'
sample.c:(.text+0xc6): undefined reference to `PQerrorMessage'
sample.c:(.text+0xed): undefined reference to `PQclear'
sample.c:(.text+0x105): undefined reference to `PQclear'
sample.c:(.text+0x119): undefined reference to `PQexec'
sample.c:(.text+0x129): undefined reference to `PQresultStatus'
sample.c:(.text+0x13a): undefined reference to `PQerrorMessage'
sample.c:(.text+0x161): undefined reference to `PQclear'
sample.c:(.text+0x179): undefined reference to `PQclear'
sample.c:(.text+0x18d): undefined reference to `PQexec'
sample.c:(.text+0x19d): undefined reference to `PQresultStatus'
sample.c:(.text+0x1ae): undefined reference to `PQerrorMessage'
sample.c:(.text+0x1d5): undefined reference to `PQclear'
sample.c:(.text+0x1ed): undefined reference to `PQnfields'
sample.c:(.text+0x20f): undefined reference to `PQfname'
sample.c:(.text+0x26b): undefined reference to `PQgetvalue'
sample.c:(.text+0x2a8): undefined reference to `PQntuples'
sample.c:(.text+0x2ba): undefined reference to `PQclear'
sample.c:(.text+0x2ce): undefined reference to `PQexec'
sample.c:(.text+0x2de): undefined reference to `PQclear'
sample.c:(.text+0x2f2): undefined reference to `PQexec'
sample.c:(.text+0x302): undefined reference to `PQclear'
sample.c:(.text+0x30e): undefined reference to `PQfinish'
collect2: ld はステータス 1 で終了しました
#
# find /usr/include/ -name libpq*.h
/usr/include/pgsql/internal/libpq-int.h
/usr/include/pgsql/server/libpq/libpq-be.h
/usr/include/pgsql/server/libpq/libpq.h
/usr/include/pgsql/server/libpq/libpq-fs.h
/usr/include/libpq/libpq-fs.h
/usr/include/libpq-events.h
/usr/include/libpq-fe.h
# gcc -I/usr/include sample.c
でもおなじです
どうすればコンパイル出きるようになるでしょうか?
よろしくお願いします
お礼
ありがとうございます # gcc -lpq sample.c とすれば動きました