linuxgccgnu-makegnu-coreutils

Error compiling coreutils - error: function might be candidate for attribute 'const' [-Werror=suggest-attribute=const]


I try to compile coreutils on Ubuntu 18.4. Here is what I did so far:

sudo apt install bison gperf make textinfo

git clone git://git.sv.gnu.org/coreutils

cd coreutils

./bootstrap

./configure

make

This ends in an error saying:

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

Solution

  • It think what happens here is:

    1. The compiler (configure) warns about potential (performance) issues.
    2. The build (make) handles all warnings as errors.

    See: https://bug-coreutils.gnu.narkive.com/q14Ima4F/bug-32762-bug-at-coreutils-compile


    Possible workarounds

    1. Suppress warnings at configure

    ./configure --disable-gcc-warnings
    

    2. Do not treat certain warnings as error at make

    make CFLAGS='-Wno-error=suggest-attribute=const'
    

    This post lists some additional options:

    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