2012-02-20 16 views
8

Pobrałem plik gdb-6.5.bz2.tar. Rozpoznaj ten plik. piszę: LDFLAGS = -static ./configureJak mogę statycznie budować GDB ze źródła?

ale wskutek ja dostać gdb, które wymagają tak plików, na przykład: ncurses.so.5 libc.so.0 itp

Jak mogę budować statycznie?

+2

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. –

+3

@ 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. –

+0

@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. –

Odpowiedz

7

This message zdaje się sugerować, że prawidłowe użycie jest

$ make LDFLAGS=-static 

Które wydaje zaskakujące. Niestety, mówi również, że nie udało się zbudować i nie ma dalszych działań. Mimo to przesłanie pochodzi z 1999 roku, więc wszystko mogło się zmienić, być może właściwym sposobem jest dzisiaj zrobienie tego po swojemu.

+0

Wydaje się nie działać dla gdb-7. – Equidamoid

6

można użyć następujących opcji configure skryptu do generowania statycznych GDB wykonywalny:

./configure --prefix=<> --enable-static=yes && make && make install 
1

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 ...

Powiązane problemy