jaiminpan / pg_jieba

Postgresql full-text search extension for chinese
BSD 3-Clause "New" or "Revised" License
341 stars 66 forks source link

centos7 + pg13, make: 未知的类型名‘sigjmp_buf’ #49

Closed suupic closed 3 years ago

suupic commented 3 years ago

cmake指定使用c99 cmake -DCMAKE_PREFIX_PATH=/usr/pgsql-13/ -DCMAKE_C_FLAGS="-std=c99"

make出错 [ 50%] Building C object CMakeFiles/pg_jieba.dir/pg_jieba.c.o In file included from /usr/pgsql-13/include/server/postgres.h:47:0, from /opt/download/pg_jieba/pg_jieba.c:14: /usr/pgsql-13/include/server/utils/elog.h:340:1: 错误:未知的类型名‘sigjmp_buf’ extern PGDLLIMPORT sigjmp_buf *PG_exception_stack; ^ /opt/download/pg_jieba/pg_jieba.c:247:1: 警告:使用‘DefineCustomConfigVariables’时先前既没有原型也没有定义 [-Wmissing-prototypes] DefineCustomConfigVariables() ^ make[2]: *** [CMakeFiles/pg_jieba.dir/pg_jieba.c.o] 错误 1 make[1]: *** [CMakeFiles/pg_jieba.dir/all] 错误 2

suupic commented 3 years ago

编译成功,反馈一下: centos7环境cmake需要加几项参数, 如下:

cmake -DCMAKE_PREFIX_PATH=/usr/pgsql-13/ -DCMAKE_C_FLAGS="-std=c99" -DCMAKE_CXX_FLAGS="-std=c++11"

然后需要在pg_jieba.c中加一行定义_XOPEN_SOURCE来解决sigjmp_buf的问题 参考 https://stackoverflow.com/a/42167667

#define _XOPEN_SOURCE
#include "postgres.h"

即可顺利编译