2012-02-20 12 views
8

He descargado gdb-6.5.bz2.tar. Descomprime este archivo escribo: LDFLAGS = -static ./configure¿Cómo puedo construir estáticamente GDB desde la fuente?

pero como resultado me sale un GDB, que requieren un modo que los archivos, por ejemplo: ncurses.so.5 libc.so.0 etc

¿Cómo puedo construir estáticamente?

+2

Es probable que no pueda. Si lo desea, tendrá que obtener versiones estáticas de todas las bibliotecas de requisitos previos, lo que probablemente sea más una recompilación que valga la pena. ¿Por qué quieres construir un GDB estáticamente vinculado? La versión enlazada dinámicamente será mucho más simple. –

+3

@JonathanLeffler: si quiere depurar un sistema recién arrancado, el gdb estático es extremadamente valioso. Esto es aún más cierto si el nuevo sistema va a utilizar un ABI incompatible del sistema original en el que está creando, por ejemplo, una libc diferente o una convención de llamada predeterminada diferente. –

+0

@R .. bien, pero luego deberá obtener o crear una biblioteca estática para cada biblioteca con la que GDB se vincula. En un sistema RHEL 5, eso 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 si la salida de 'ldd/usr/bin/gdb' es de confianza. No estoy seguro de si realmente desea reemplazar todos aquellos con bibliotecas estáticas, pero esa es la lista de bibliotecas compartidas utilizadas por 'gdb' en esta plataforma (antigua). –

Respuesta

7

This message parece dar a entender que el uso correcto es

$ make LDFLAGS=-static 

que parece sorprendente. Desafortunadamente, también dice que no se puede construir y no hay seguimientos. Aún así, el mensaje es de 1999, por lo que todo podría haber cambiado, tal vez la forma adecuada hoy es hacerlo a tu manera.

+0

Parece que no funciona para gdb-7. – Equidamoid

6

Puede utilizar las siguientes opciones para configurar secuencia de comandos para generar un BGF ejecutable estática:

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

Tanto gcc y gdb falta de respeto la bandera --enable-static que debe ser pasado a configure, la forma correcta de hacer esto es:

En el caso de gDB 8.0, hay que añadir también el --disable-interprocess-agent para construir con éxito una versión estática:

mkdir build-gdb && cd build-gdb && ../configure --prefix=... --enable-static --disable-interprocess-agent ...

En el caso de gcc 7.1, hay que añadir también el --disable-libcc1 para construir con éxito una versión estática:

mkdir build-gcc && cd guild-gcc && ../configure --prefix=... --enable-static --disable-shared --disable-libcc1 ...

Cuestiones relacionadas