Есть ли способ узнать, какие опции были использованы во время компиляции?

Взгляните на следующую командную строку:

gcc -o hello -Wall -D_BSD_SOURCE hello-world.c 

Теперь, есть ли способ узнать об этих параметрах, выполнив некоторую обработку в исполняемом файле «hello».

  • Нет 32 ошибки библиотеки разработки после установки glibc-devel.i686
  • файлы заголовков списка, используемые проектом, скомпилированным с gcc, вместе с иерархией
  • Компиляция против более новой версии glib?
  • Почему библиотека C ++ не отключена при создании GCC
  • Переключение между общими буферами в режиме emacs gdb без мыши (в текстовом терминале)
  • Ошибка компиляции исходного кода, возможно, связанного с cpp
  • UNIX be-spoke Shell-Script / Команды
  • Инструменты GNU против GCC SVN?
  • 3 Solutions collect form web for “Есть ли способ узнать, какие опции были использованы во время компиляции?”

    К сожалению нет. Но если вы думаете об этом, прежде чем создавать двоичный файл, есть несколько способов. Вот еще один. С недавним gcc вы можете использовать опцию -frecord-gcc-switch, которая добавит один раздел в файл ELF с описанием, которое вы ищете.

     $ gcc -frecord-gcc-switches -o hello -Wall -D_BSD_SOURCE hello-world.c $ readelf -p .GCC.command.line hello String dump of section '.GCC.command.line': [ 0] -D _BSD_SOURCE [ f] hello-world.c [ 1d] -mtune=generic [ 2c] -march=x86-64 [ 3a] -Wall [ 40] -frecord-gcc-switches 

    Как вы можете видеть, это показывает все используемые опции, а не только те, которые вы предоставили явно.

    Невозможно, но версия компилятора может быть доступна, если вы не разделили бинарный файл.

    Если вы ссылаетесь на материал макроса, то есть #ifdef HAVE_XXX , он был записан в исходном файле C / C ++. Взгляните на цепочки инструментальных autogen GNU.

    Ни в коем случае, но если вы используете Makefile, есть способ:

     TARGET=hello CFLAGS=-Wall -D_BSD_SOURCE hello-world.c all: cc -o $(TARGET) $(CFLAGS) -DCFLAGS="\"$(CFLAGS)\"" 
    Interesting Posts

    Как заменить пробелы в именах файлов с помощью подчеркивания

    Как irqbalance определяет, какой пакет использовать?

    Изменение порта источника PulseAudio: «доступность = нет» и приоритет

    Office 365 онлайн от Unix, работающий только с MTU <= 1400

    Почему мой клиент IPA не распознает доверенных пользователей AD

    Редактирование бинарных потоков, содержащих байты '\ x00'

    Автозагрузка после загрузки на OpenBSD

    GUFW или Firestarter в Fedora

    найти с пользовательскими переменными

    Использовать glob оболочки *, но исключить один файл и не совпадать с каталогами?

    Как настроить agetty для автолога на одном терминале

    vim слишком медленный при сохранении файлов

    Улимит неограниченное поведение поведения стека

    Как определить, является ли процесс интенсивным сетевым вводом-выводом или нет в пользовательском режиме в Linux?

    Как я могу открыть открытый и прослушивающий порт в Linux?

    Linux и Unix - лучшая ОС в мире.