linux下编译nginx1.0.15报错:Implicit fallthrough error

linux下编译nginx需要gcc,查看gcc版本:

gcc -dumpversion

如果gcc版本号为7,那么源代码的switch-case块中如果忘了加上break,有可能会报错Implicit fallthrough error。解决方法有几种,比如:

  • 更换gcc版本,具体是升级还是降级还需测试。
  • 在报错的switch-case块中加上break。此时要对代码逻辑理解清楚,否则加上break有可能会破坏原来的逻辑。
  • 编译时忽略Implicit fallthrough error这个错误。

笔者采用了第三种方法,即在编译的时候就忽略这个错误。方法是修改objs/Makefile的内容。
下载nginx的源代码并解压缩后,进入nginx目录。此时当前目录下没有Makefile,也没有objs文件夹。执行./configure命令将在当前目录生成Makefile,并且生成objs文件夹,objs文件夹下面也有一个Makefile。当前文件夹下的Makefile主要调用objs/Makefile去执行编译命令。
因此为了解决编译的报错(或报警),需要增加objs/Makefile的编译参数。用vim编辑该文件,看到头几行内容为:
这里写图片描述

CFLAGS表示编译的可选参数,我们只需要在后面加上-Wno-implicit-fallthrough,即可忽略gcc7编译时switch-case中缺少break的错误。如下图:
这里写图片描述

其他版本的gcc是否会出现该问题还有待验证。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值