Parcourir la source

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 il y a 23 ans
Parent
commit
faec125f35
1 fichiers modifiés avec 3 ajouts et 0 suppressions
  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;