首页 > 解决方案 > cgo如何抑制警告

问题描述

我有一个使用 C 库的 cgo 应用程序。在构建过程中,编译器会显示一些警告:

In file included from ./libsolv-sys/src/qsort_r.c:40:0,
                 from ./libsolv-sys/src/util.c:181,
                 from ./libsolv.go:16:
/usr/include/sys/cdefs.h:1:2: warning: #warning usage of non-standard #include <sys/cdefs.h> is deprecated [-Wcpp]
 #warning usage of non-standard #include <sys/cdefs.h> is deprecated
  ^~~~~~~

这个库不是我自己维护的,我不能直接修复这个警告。我厌倦了这个警告。

问题:如何抑制 CGO 中的警告?

使用的 CGO 标志: CFLAGS: -I./libsolv-sys/src -D LIBSOLV_INTERNAL LDFLAGS: ${SRCDIR}/libsolv-sys.a

标签: gocgo

解决方案


CGO 依赖外部编译器工具链来编译您的 C 代码。例如,在我的 Linux 机器上,它将默认使用 GCC 来编译 C 代码。

对于 gcc,您要查找的标志是-w,因此您的标志将是:

-I./libsolv-sys/src -D LIBSOLV_INTERNAL -w

参考:禁用所有 gcc 警告

如果您使用另一个工具链,您可能需要另一个标志。


推荐阅读