Procházet zdrojové kódy

This evening I've been investigating why linking with the shared uClibc library
was not working when booting busybox as init, even though it workes when run on
my desktop system. I made boot floppy with just /dev, a few /etc entries,
busybox dynamically linked vs uClibc, and /lib with shared uClibc in it. And
just as several people have reported, it didn't work.

So I ran 'ldd /bin/true' and it showed 'true' is linked with the shared library
loader. But 'ldd ./busybox' showed it was only linked with uClibc. Doh! Of
course it couldn't work!

This patch fixes the gcc wrapper so when we link with the shared uClibc
library, we also always link with the correct shared lib loader. With this
patch in place, I have now sucessfully booted busybox linked vs the shared
uClibc library. And it works great!
-Erik

Eric Andersen před 23 roky
rodič
revize
faec125f35
1 změnil soubory, kde provedl 3 přidání a 0 odebrání
  1. 3 0
      extra/gcc-uClibc/gcc-uClibc.c

+ 3 - 0
extra/gcc-uClibc/gcc-uClibc.c

@@ -142,6 +142,9 @@ int main(int argc, char **argv)
 				}
 			}
 			gcc_argv[i++] = GCC_LIB;
+			if (!use_static_linking && DYNAMIC_LINKER[0]) {
+			    gcc_argv[i++] = DYNAMIC_LINKER;
+			}
 		}
 	}
 	gcc_argv[i++] = NULL;