build system: specify '-nostldlib' when linking to .o files
authorDrew Moseley <drew_moseley@mentor.com>
Wed, 2 Apr 2014 10:12:46 +0000 (12:12 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 2 Apr 2014 10:12:46 +0000 (12:12 +0200)
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>
scripts/Makefile.build

index 5685b5bcc5cc3ae1f0f78900770b8b1904b55757..5eac45f91f86852f322af06cd52c214f39925d99 100644 (file)
@@ -255,8 +255,9 @@ $(sort $(subdir-obj-y)): $(subdir-ym) ;
 ifdef builtin-target
 quiet_cmd_link_o_target = LD      $@
 # 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)),\
-               $(LD) $(ld_flags) -r -o $@ $(filter $(obj-y), $^),\
+               $(LD) -nostdlib $(ld_flags) -r -o $@ $(filter $(obj-y), $^),\
                rm -f $@; $(AR) rcs $@)
 
 $(builtin-target): $(obj-y) FORCE