Оба 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 ...
Вы, вероятно, не может. Если вы захотите, вам придется получить статические версии всех необходимых предварительных библиотек, что, вероятно, больше перекомпиляции, чем того стоит. Почему вы хотите создать статически связанный GDB? Динамически связанная версия будет намного проще. –
@JonathanLeffler: Если вы хотите отладить недавно загрузочную систему, то gdb, связанный с статикой, чрезвычайно ценен. Это даже более верно, если новая система будет использовать несовместимый ABI из исходной системы, на которой вы строите, например, другой libc или другое соглашение о вызове по умолчанию. –
@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' на этой (античной) платформе. –