埋め込みSQL (Debian8.0)

2016/11/26


概要

埋込みSQL(C言語)でPostgreSQLを操作する。Wheezyではコンパイルできたが、Jessieでは「ecpglib.hがない」と言われる。

原因

ecpgには問題はない。PostgreSQL関連ヘッダファイルの格納場所が問題だった。
PostgreSQL(デフォルト)では/usr/local/include/postgresql以下にヘッダがあるとしているが、Jessieでは/usr/include/postgresql以下に配置されている。
gccにヘッダファイルの格納位置を明示しなければならない。具体的には、Makefile中、5行目(gcc...)に-Iオプションでヘッダファイルを格納したディレクトリを明示する。
## Embedded SQL sample
All : sample1
	./sample1
sample1 : sample1.c
	gcc -o sample1 sample1.c -I /usr/include/postgresql -lecpg

sample1.c : sample1.pgc
	ecpg sample1.pgc 

clean :
	rm sample1 sample1.c
以下、Wheezyと同様なので省略する。 Wheezyで実行した記録はこちら[埋め込みSQL(Debian 7.0)]から参照できる。