Sia gcc e gdb mancanza di rispetto alla bandiera --enable-static
che dovrebbe essere passato al configure
, il modo corretto per fare questo è:
Nel caso di gdb 8.0, si deve aggiungere anche il --disable-interprocess-agent
per costruire con successo una versione statica:
mkdir build-gdb && cd build-gdb && ../configure --prefix=... --enable-static --disable-interprocess-agent ...
Nel caso di gcc 7.1, si deve aggiungere anche il --disable-libcc1
per costruire con successo una versione statica:
mkdir build-gcc && cd guild-gcc && ../configure --prefix=... --enable-static --disable-shared --disable-libcc1 ...
fonte
2017-06-26 15:31:17
Probabilmente non si può. Se lo si desidera, è necessario ottenere versioni statiche di tutte le librerie dei prerequisiti, che è probabilmente una ricompilazione maggiore di quella che merita. Perché vuoi creare un GDB collegato staticamente? La versione collegata dinamicamente sarà molto più semplice. –
@JonathanLeffler: Se si desidera eseguire il debug di un sistema appena riavviato, gdb con collegamento statico è estremamente prezioso. Ciò è ancora più vero se il nuovo sistema utilizza un ABI incompatibile dal sistema originale su cui si sta sviluppando, ad esempio una diversa libc o una diversa convenzione di chiamata predefinita. –
@R ..: bene, ma poi dovrai ottenere o creare una libreria statica per ogni libreria con cui GDB si collega. Su un sistema RHEL 5, ciò significa: 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 se l'output di 'ldd/usr/bin/gdb' deve essere considerato attendibile. Non sono sicuro di voler davvero sostituire tutti quelli con librerie statiche, ma questa è la lista di librerie condivise usate da 'gdb' su questa (antica) piattaforma. –