Zarówno gcc i gdb szacunku flagę --enable-static
który powinien być przekazany do configure
, poprawny sposób to zrobić jest:
W przypadku gdb 8.0, trzeba również dodać --disable-interprocess-agent
skutecznie budować statyczną wersję:
mkdir build-gdb && cd build-gdb && ../configure --prefix=... --enable-static --disable-interprocess-agent ...
W przypadku gcc 7.1, trzeba również dodać --disable-libcc1
z powodzeniem zbudować wersji statycznej:
mkdir build-gcc && cd guild-gcc && ../configure --prefix=... --enable-static --disable-shared --disable-libcc1 ...
Prawdopodobnie nie. Jeśli chcesz, będziesz musiał uzyskać statyczne wersje wszystkich wstępnie wymaganych bibliotek, co prawdopodobnie oznacza więcej rekompilacji, niż jest warte twojego czasu. Dlaczego chcesz utworzyć statycznie połączony GDB? Dynamicznie połączona wersja będzie znacznie prostsza. –
@ JonathanLeffler: Jeśli chcesz debugować system nowo-bootstrapped, static-linked gdb jest niezwykle cenny. Jest to tym bardziej prawdziwe, jeśli nowy system będzie używał niekompatybilnego ABI z oryginalnego systemu, na którym się opierasz - na przykład, inna libc lub inna domyślna konwencja wywoływania. –
@R ..: w porządku, ale musisz zdobyć lub zbudować statyczną bibliotekę dla każdej biblioteki, z którą GDB łączy. W systemie RHEL 5 oznacza to: libreadline.so.5, libncurses.so.5, libm.so.6, libexpat.so.0, libdl.so.2, libc.so.6,/lib64/ld- linux-x86-64.so.2, jeśli dane wyjściowe 'ldd/usr/bin/gdb' mają być zaufane. Nie jestem pewien, czy naprawdę chciałbyś zastąpić te wszystkie statycznymi bibliotekami, ale to jest lista wspólnych bibliotek używanych przez 'gdb' na tej (antycznej) platformie. –