unrecognized command line option ‘-Wimplicit-fallthrough=3’


  編譯PG插件時,報"unrecognized command line option ‘-Wimplicit-fallthrough=3’"。

  關於implicit-fallthrough選項:

  As of GCC 7-Wimplicit-fallthrough is supported and __attribute__((fallthrough)) can be used to suppress the warnings when fallthrough is intentional. GCC does recognize "fallthrough" comments in certain scenarios, but it can be confused fairly easily.

  而編譯用的是gcc (GCC) 4.8.5,且沒有地方指定了該選項。

  唯一原因就是pg本身使用gcc 7編譯的,可通過pg_config來確定編譯用的選項。

[zjh@lightdb1 zhparser-0.2.0]$ pg_config 
BINDIR = /home/zjh/pgsql13.2/bin
DOCDIR = /home/zjh/pgsql13.2/share/doc
HTMLDIR = /home/zjh/pgsql13.2/share/doc
INCLUDEDIR = /home/zjh/pgsql13.2/include
PKGINCLUDEDIR = /home/zjh/pgsql13.2/include
INCLUDEDIR-SERVER = /home/zjh/pgsql13.2/include/server
LIBDIR = /home/zjh/pgsql13.2/lib
PKGLIBDIR = /home/zjh/pgsql13.2/lib
LOCALEDIR = /home/zjh/pgsql13.2/share/locale
MANDIR = /home/zjh/pgsql13.2/share/man
SHAREDIR = /home/zjh/pgsql13.2/share
SYSCONFDIR = /home/zjh/pgsql13.2/etc
PGXS = /home/zjh/pgsql13.2/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE =  '--prefix=/home/zjh/pgsql13.2' '--enable-depend' '--enable-cassert' '--enable-debug' 'CFLAGS=-DLOCK_DEBUG -DBTREE_BUILD_STATS -DWAL_DEBUG -DCATCACHE_STATS -ggdb -O0' '--enable-dtrace' '--enable-nls=gbk' '--with-openssl' '--with-libxml' '--with-zlib' '--with-llvm' 'LLVM_CONFIG=/opt/rh/llvm-toolset-7/root/usr/bin/llvm-config' '--enable-profiling'
CC = gcc
CPPFLAGS = -D_GNU_SOURCE -I/usr/include/libxml2
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -g -pg -DLINUX_PROFILE -DLOCK_DEBUG -DBTREE_BUILD_STATS -DWAL_DEBUG -DCATCACHE_STATS -ggdb -O0
CFLAGS_SL = -fPIC
LDFLAGS = -L/opt/rh/llvm-toolset-7/root/usr/lib64 -Wl,--as-needed -Wl,-rpath,'/home/zjh/pgsql13.2/lib',--enable-new-dtags
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgcommon -lpgport -lpthread -lxml2 -lssl -lcrypto -lz -lreadline -lrt -ldl -lm 
VERSION = PostgreSQL 13.2

  遺憾的是,沒有pg_config選項可以修改其配置。

  所以,要么用gcc 4.8.5重新編譯pg,要么切換到7.3.1和pg_config的配置一致,例如llvm,可以從別的環境拷貝一個過來。

  4.8.5重新編譯后的選項如下:

[zjh@lightdb1 postgresql-13.2]$ pg_config 
BINDIR = /home/zjh/pgsql13.2/bin
DOCDIR = /home/zjh/pgsql13.2/share/doc
HTMLDIR = /home/zjh/pgsql13.2/share/doc
INCLUDEDIR = /home/zjh/pgsql13.2/include
PKGINCLUDEDIR = /home/zjh/pgsql13.2/include
INCLUDEDIR-SERVER = /home/zjh/pgsql13.2/include/server
LIBDIR = /home/zjh/pgsql13.2/lib
PKGLIBDIR = /home/zjh/pgsql13.2/lib
LOCALEDIR = /home/zjh/pgsql13.2/share/locale
MANDIR = /home/zjh/pgsql13.2/share/man
SHAREDIR = /home/zjh/pgsql13.2/share
SYSCONFDIR = /home/zjh/pgsql13.2/etc
PGXS = /home/zjh/pgsql13.2/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE =  '--prefix=/home/zjh/pgsql13.2'
CC = gcc -std=gnu99
CPPFLAGS = -D_GNU_SOURCE
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -O2
CFLAGS_SL = -fPIC
LDFLAGS = -Wl,--as-needed -Wl,-rpath,'/home/zjh/pgsql13.2/lib',--enable-new-dtags
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgcommon -lpgport -lpthread -lz -lreadline -lrt -ldl -lm 
VERSION = PostgreSQL 13.2

 

重新編譯就不報錯了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM