postgreSQL用のC拡張をビルドするために古いメイクファイルを変更しています。このMakefileで何が問題になっていますか? (ヘッダファイルが見つかりません)
PGLIB = /usr/lib/postgresql/8.4/lib
PQINC = /usr/include/postgresql/8.4/server
CC=gcc
override CFLAGS+= $(CFLAGS_SL) -DPG_AGGREGATE
SHLIB = pg_myextlib
SRC = foo.c \
foobar.c
OBJS = foo.o \
foobar.o
all: $(OBJS)
$(CC) -shared -o $(SHLIB)$(DLSUFFIX) $(OBJS) -I$(PQINC)
cp *.so $(PGLIB)
clean:
rm -f $(SHLIB) $(OBJS)
私はmakeを実行したときに私が得るエラーは次のとおりです:Makefileは現在、次のようになりますパスを含めることを示唆している
common.h:58:22: error: postgres.h: No such file or directory
(ファイルは$ PQINCに存在する)追加されていません。 私はMakefileを書いて以来、長い時間を過ごしました。残念ながら、私はかなり '共有'は、Ubuntu(私の現在の開発者)に共有ライブラリを構築するgccフラグではないことを確信しています - 私はフラグが 'fPIC'であるべきだと思います - 誰かがこれを確認できますか?
ノーなります実行可能ファイルに、Ubuntuの10.0.4上のgcc V4.4.3をruningてと$(OBJS)
のもののように、オブジェクトファイルをオンコンパイラライン上-Isomething
を配置PG 8.4で使用するために
共有ライブラリを作成するには、リンカーステージで-sharedが必要です。共有ライブラリで使用される位置独立コードを生成するには、コンパイル段階で-fPICが必要です。 (-fPICはCFLAGS行に追加することができます) – gastush