• Fathi Boudra's avatar
    selftests: timers: use LDLIBS instead of LDFLAGS · 7d4e591b
    Fathi Boudra authored
    posix_timers fails to build due to undefined reference errors:
    
     aarch64-linaro-linux-gcc --sysroot=/build/tmp-rpb-glibc/sysroots/hikey
     -O2 -pipe -g -feliminate-unused-debug-types -O3 -Wl,-no-as-needed -Wall
     -DKTEST  -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -lrt -lpthread
     posix_timers.c
     -o /build/tmp-rpb-glibc/work/hikey-linaro-linux/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/timers/posix_timers
     /tmp/cc1FTZzT.o: In function `check_timer_create':
     /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/timers/posix_timers.c:157:
     undefined reference to `timer_create'
     /usr/src/debug/kselftests/4.12-r0/linux-4.12-rc7/tools/testing/selftests/timers/posix_timers.c:170:
     undefined reference to `timer_settime'
     collect2: error: ld returned 1 exit status
    
    It's GNU Make and linker specific.
    
    The default Makefile rule looks like:
    
    $(CC) $(CFLAGS) $(LDFLAGS) $@ $^ $(LDLIBS)
    
    When linking is done by gcc itself, no issue, but when it needs to be passed
    to proper ld, only LDLIBS follows and then ld cannot know what libs to link
    with.
    
    More detail:
    https://www.gnu.org/software/make/manual/html_node/Implicit-Variables.html
    
    LDFLAGS
    Extra flags to give to compilers when they are supposed to invoke the linker,
    ‘ld’, such as -L. Libraries (-lfoo) should be added to the LDLIBS variable
    instead.
    
    LDLIBS
    Library flags or names given to compilers when they are supposed to invoke the
    linker, ‘ld’. LOADLIBES is a deprecated (but still supported) alternative to
    LDLIBS. Non-library linker flags, such as -L, should go in the LDFLAGS
    variable.
    
    https://lkml.org/lkml/2010/2/10/362
    
    tools/perf: libraries must come after objects
    
    Link order matters, use LDLIBS instead of LDFLAGS to properly link against
    libpthread.
    Signed-off-by: default avatarDenys Dmytriyenko <denys@ti.com>
    Signed-off-by: default avatarFathi Boudra <fathi.boudra@linaro.org>
    Signed-off-by: default avatarShuah Khan <shuah@kernel.org>
    7d4e591b
Makefile 773 Bytes