2012-02-20 2 views
8

Я загрузил gdb-6.5.bz2.tar. Отвяжите этот файл. я пишу: LDFLAGS = -static ./configureКак я могу статически строить GDB из источника?

, но в результате я получаю GDB, которые требуют так файлы, например: ncurses.so.5 libc.so.0 и т.д.

Как я могу построить статически?

+2

Вы, вероятно, не может. Если вы захотите, вам придется получить статические версии всех необходимых предварительных библиотек, что, вероятно, больше перекомпиляции, чем того стоит. Почему вы хотите создать статически связанный GDB? Динамически связанная версия будет намного проще. –

+3

@JonathanLeffler: Если вы хотите отладить недавно загрузочную систему, то gdb, связанный с статикой, чрезвычайно ценен. Это даже более верно, если новая система будет использовать несовместимый ABI из исходной системы, на которой вы строите, например, другой libc или другое соглашение о вызове по умолчанию. –

+0

@R ..: отлично, но тогда вам нужно будет получить или создать статическую библиотеку для каждой библиотеки, с которой связана GDB. В системе RHEL 5 это означает: 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, если нужно получить сертификат 'ldd/usr/bin/gdb'. Я не уверен, действительно ли вы захотите заменить все эти статические библиотеки, но это список разделяемых библиотек, используемых 'gdb' на этой (античной) платформе. –

ответ

7

This message, кажется, подразумевает, что правильное использование является

$ make LDFLAGS=-static 

Что кажется удивительным. К сожалению, он также говорит, что он не может построить, и нет последующих действий. Тем не менее, сообщение с 1999 года, поэтому все могло измениться, возможно, правильным способом сегодня является сделать это по-своему.

+0

Кажется, что не работает для gdb-7. – Equidamoid

6

Вы можете использовать следующие параметры для конфигурирования сценария для создания статического GDB исполняемого файла:

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

Оба GCC и GDB неуважения к --enable-static флагу, который должен быть передан в configure, правильный способ сделать это является:

в случае GDB 8.0, вы должны также добавить --disable-interprocess-agent успешно построить статическую версию:

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

В случае GCC 7.1, вы должны также добавить --disable-libcc1 успешно построить статическую версию:

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