Error compiling coreutils - error: function might be candidate for attribute 'const' [-Werror=suggest-attribute=const]
Error compiling coreutils - error: function might be candidate for attribute 'const' [-Werror=suggest-attribute=const]
我尝试在 Ubuntu 18.4 上编译 coreutils。这是我到目前为止所做的:
sudo apt install bison gperf make textinfo
git clone git://git.sv.gnu.org/coreutils
cd coreutils
./bootstrap
./configure
make
这以错误结束:
lib/acl-internal.c: In function 'free_permission_context':
lib/acl-internal.c:479:1: error: function might be candidate for attribute 'const' [-Werror=suggest-attribute=const]
free_permission_context (struct permission_context *ctx)
^~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Makefile:9808: recipe for target 'lib/acl-internal.o' failed
make[2]: *** [lib/acl-internal.o] Error 1
make[2]: Leaving directory '/path/to/coreutils'
Makefile:12445: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/path/to/coreutils'
Makefile:6556: recipe for target 'all' failed
make: *** [all] Error 2
它认为这里发生的是:
- 编译器(配置)警告潜在的(性能)问题。
- 构建 (make) 将所有警告作为错误处理。
见:
https://bug-coreutils.gnu.narkive.com/q14Ima4F/bug-32762-bug-at-coreutils-compile
可能的解决方法
1.抑制 configure
处的警告
./configure --disable-gcc-warnings
2。不要将 make
处的某些警告视为错误
make CFLAGS='-Wno-error=suggest-attribute=const'
This post 列出了一些附加选项:
I suggest using:
-Wno-error=suggest-attribute=pure
-Wno-error=suggest-attribute=const
-Wno-error=suggest-attribute=noreturn
-Wno-error=suggest-attribute=format
-Wno-error=suggest-attribute=cold
-Wno-error=suggest-attribute=malloc
我尝试在 Ubuntu 18.4 上编译 coreutils。这是我到目前为止所做的:
sudo apt install bison gperf make textinfo
git clone git://git.sv.gnu.org/coreutils
cd coreutils
./bootstrap
./configure
make
这以错误结束:
lib/acl-internal.c: In function 'free_permission_context':
lib/acl-internal.c:479:1: error: function might be candidate for attribute 'const' [-Werror=suggest-attribute=const]
free_permission_context (struct permission_context *ctx)
^~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
Makefile:9808: recipe for target 'lib/acl-internal.o' failed
make[2]: *** [lib/acl-internal.o] Error 1
make[2]: Leaving directory '/path/to/coreutils'
Makefile:12445: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/path/to/coreutils'
Makefile:6556: recipe for target 'all' failed
make: *** [all] Error 2
它认为这里发生的是:
- 编译器(配置)警告潜在的(性能)问题。
- 构建 (make) 将所有警告作为错误处理。
见: https://bug-coreutils.gnu.narkive.com/q14Ima4F/bug-32762-bug-at-coreutils-compile
可能的解决方法
1.抑制 configure
./configure --disable-gcc-warnings
2。不要将 make
make CFLAGS='-Wno-error=suggest-attribute=const'
This post 列出了一些附加选项:
I suggest using:
-Wno-error=suggest-attribute=pure
-Wno-error=suggest-attribute=const
-Wno-error=suggest-attribute=noreturn
-Wno-error=suggest-attribute=format
-Wno-error=suggest-attribute=cold
-Wno-error=suggest-attribute=malloc