2017-02-10 12 views
1

all、 PostgreSQL 9.6に対して次のCスケルトンをコンパイルしようとしています。PostgreSQL 9.6 C関数コンパイルエラー:elog.h:unknown type 'sigjmp'

#include "postgres.h" 
#include "fmgr.h" 
#include "miscadmin.h" 

#ifdef PG_MODULE_MAGIC 
PG_MODULE_MAGIC; 
#endif 

PG_FUNCTION_INFO_V1(calculateValHash); 
Datum calculateValHash(PG_FUNCTION_ARGS) { 

text *t = PG_GETARG_TEXT_P(0); 
if (t) { 
    PG_RETURN_INT32(12); 
} else { 
    PG_RETURN_INT32(1); 
} 

}エラーと

次のgccコマンドが返す:

gcc -shared -I/usr/include/postgresql/9.6/server -lpq -o ./_build/magick.so pgmagick.c -std=c99 -Wall -Wextra 
In file included from /usr/include/postgresql/9.6/server/postgres.h:48:0, 
       from pgmagick.c:1: 
/usr/include/postgresql/9.6/server/utils/elog.h:318:20: error: unknown type name ‘sigjmp_buf’ 
extern PGDLLIMPORT sigjmp_buf *PG_exception_stack; 
       ^

OS:Ubuntuの16.04.1 LTS は、私は、PostgreSQLサーバ-DEV-9.6もインストールされています。

+1

あなた自身のgccコマンドを書く必要はありません。[PGXS](https://www.postgresql.org/docs/current/static/extend-pgxs.html)で、すべての面倒な詳細について心配する必要はありません。最小のPGXSメークファイルの例をここで見つけることができます:http://stackoverflow.com/a/38222564 –

+0

答えを受け入れるには、以下の答えの隣のチェックマークをクリックしてください。私たちは解決策や[解決済み]マークを質問に追加しません。 – halfer

答えて

2

man setjmpによると、

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

siglongjmp(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_C_SOURCE 

#include "postgres.h"#define _XOPEN_SOURCEしてみてください。

関連する問題