build system: specify '-nostldlib' when linking to .o files

For certain cross build scenarios the LD variable is overridden
to use the gcc executive to ensure all the target tuning parameters
are used.  In these cases, the executive errors out as shown below
but since this step is only linking to a .o file the standard libs
are not needed.

    $ make LD=gcc applets/built-in.o
      LD      applets/built-in.o
    /usr/bin/ld: cannot find -lgcc_s
    /usr/bin/ld: cannot find -lgcc_s
    collect2: ld returned 1 exit status
    make[1]: *** [applets/built-in.o] Error 1
    make: *** [applets_dir] Error 2

Signed-off-by: Drew Moseley <drew_moseley@mentor.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Drew Moseley 2014-04-02 12:12:46 +02:00 committed by Denys Vlasenko
parent c9a67133d6
commit 7537406edd

View File

@ -255,8 +255,9 @@ $(sort $(subdir-obj-y)): $(subdir-ym) ;
ifdef builtin-target ifdef builtin-target
quiet_cmd_link_o_target = LD $@ quiet_cmd_link_o_target = LD $@
# If the list of objects to link is empty, just create an empty built-in.o # If the list of objects to link is empty, just create an empty built-in.o
# -nostdlib is added to make "make LD=gcc ..." work (some people use that)
cmd_link_o_target = $(if $(strip $(obj-y)),\ cmd_link_o_target = $(if $(strip $(obj-y)),\
$(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^),\ $(LD) -nostdlib $(ld_flags) -r -o $@ $(filter $(obj-y), $^),\
rm -f $@; $(AR) rcs $@) rm -f $@; $(AR) rcs $@)
$(builtin-target): $(obj-y) FORCE $(builtin-target): $(obj-y) FORCE