我是linux新手,也遇到过这个问题。我正在尝试运行 USSD 命令,建议我使用atinout
,但是从他们的页面检查,我似乎找不到如何安装它。我从以下位置下载了 zip 文件来源锻造, 这是atinout-0.9.1
。
我尝试运行make
(虽然我不确定它是否有效)并得到这个输出:
gcc -o atinout -W -Wall -Wextra -Werror -DVERSION=\"0.9.1\" -g atinout.c
atinout.c: In function ‘is_final_result’:
atinout.c:141:6: error: this statement may fall through [-Werror=implicit-fallthrough=]
141 | if (strcmp(&response[1], "K\r\n") == 0) {
| ^
atinout.c:145:2: note: here
145 | default:
| ^~~~~~~
cc1: all warnings being treated as errors
make: *** [Makefile:14: atinout] Error 1
有人可以指导我吗?谢谢。
答案1
我在 GCC 9.3.0 中遇到同样的错误。一种可能的修复方法是-Werror
从 Makefile 中的这一行中删除 :
CFLAGS = -W -Wall -Wextra -Werror \
所以它看起来像这样:
CFLAGS = -W -Wall -Wextra \
有可能在开发 atinout 时,GCC 还没有隐式失败警告(它仅在 2016 年的提交 81fea426da8 中实现),或者使用了另一个编译器来编译它。
另一个修复方法是尝试不同的编译器,例如,我在 clang 10.0.1 中没有收到任何警告或错误:
$ make CC=clang
clang -o atinout -W -Wall -Wextra -Werror -DVERSION=\"0.9.1\" -g atinout.c
在这两种情况下,您最终都会在当前工作目录中得到atinout:
$ ./atinout --version
atinout version 0.9.1
Copyright (C) 2013 Håkon Løvdal <[email protected]>
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it under
certain conditions; see http://www.gnu.org/licenses/gpl.html for details.