报错解决 error this statement may fall through [-Werror=implicit-fallthrough=]

此文首发于我的个人博客:zhang0peter的个人博客


下午在编译 grpc时报错如下:

utilities/blob_db/blob_log_reader.cc:74:18: error: this statement may fall through [-Werror=implicit-fallthrough=]
       next_byte_ += kb_size;
       ~~~~~~~~~~~^~~~~~~~~~
utilities/blob_db/blob_log_reader.cc:76:5: note: here
     case kReadHeaderKey:
     ^~~~
utilities/blob_db/blob_log_reader.cc:94:18: error: this statement may fall through [-Werror=implicit-fallthrough=]
       next_byte_ += record->GetBlobSize();
       ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
utilities/blob_db/blob_log_reader.cc:96:5: note: here
     case kReadHeaderKeyBlob:
     ^~~~
cc1plus: all warnings being treated as errors
Makefile:1813: recipe for target 'utilities/blob_db/blob_log_reader.o' failed
make: *** [utilities/blob_db/blob_log_reader.o] Error 1
make: *** Waiting for unfinished jobs....
CMake Warning at CMakeLists.txt:122 (message):
  gRPC_INSTALL will be forced to FALSE because gRPC_ZLIB_PROVIDER is "module"


CMake Error at third_party/boringssl/CMakeLists.txt:30 (message):
  Could not find Go


-- Configuring incomplete, errors occurred!
See also "/home/zhang/paxosstore/certain/third/grpc/CMakeFiles/CMakeOutput.log".
See also "/home/zhang/paxosstore/certain/third/grpc/CMakeFiles/CMakeError.log".
[MAKE]    Generating cache.mk
[AR]      Creating /home/zhang/paxosstore/certain/third/grpc/libs/opt/libgpr.a
[C]       Compiling third_party/boringssl/crypto/bio/fd.c
[C]       Compiling third_party/boringssl/crypto/bio/file.c
[C]       Compiling third_party/boringssl/crypto/bn/add.c
[C]       Compiling third_party/boringssl/crypto/bn/asm/x86_64-gcc.c
third_party/boringssl/crypto/bio/file.c: In function file_ctrl:
third_party/boringssl/crypto/bio/file.c:186:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
       num = 0;
       ~~~~^~~
third_party/boringssl/crypto/bio/file.c:187:5: note: here
     case BIO_C_FILE_SEEK:
     ^~~~
third_party/boringssl/crypto/bio/fd.c: In function fd_ctrl:
third_party/boringssl/crypto/bio/fd.c:192:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
       num = 0;
       ~~~~^~~
third_party/boringssl/crypto/bio/fd.c:193:5: note: here
     case BIO_C_FILE_SEEK:

解决方法如下:

make CFLAGS='-Wno-implicit-fallthrough'

参考:[NEW] gcc 7 and -Werror=implicit-fallthrough · Issue #13854 · grpc/grpc