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

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

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

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

  • Случайное удаление dev-libs / mpc из Gentoo
  • «GLIBC» не может использоваться, когда я установил gcc 5.1.0
  • Влияние статической и динамической привязки на начальный адрес
  • CentOS 5.8 с gcc 4.4.7 ссылками на libstdc ++ 6.0.8. Как это возможно?
  • Как установить GCC 5 на debian jessie 8.1
  • Получите новейший gcc для debian?
  • Найти и установить man-файл вручную
  • Установка GCC в Solaris_x86
  • 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

    Система Fedora 20 зависает при появлении логотипа Fedora

    Как найти строки с использованием регулярных выражений в grep

    Могу ли я видеть удаленный терминал?

    Что происходит с данными раздела подкачки Linux при запуске Windows с помощью двойной загрузки

    Имеете ли сервер на DigitalOcean только доступным SSH, что произойдет, если мой компьютер сломается?

    символы egrep group в цитате

    Команда Shell для удаления первой строки, заключенной с косой чертой

    Первичный сетевой интерфейс в Linux

    Как обрабатывать текстовый файл с несколькими столбцами для получения другого текстового файла с несколькими столбцами?

    Я хочу использовать переменную, объявленную внутри сеанса SSH, для локального использования в сценарии оболочки

    Почему ln -s создает относительные сломанные ссылки?

    Получить итоговое количество всех исправлений, применяемых к серверу?

    Как изменить стандартный файловый менеджер рабочего стола Cinnamon?

    Откройте новый экземпляр gnome-system-monitor

    Как несколько команд заданы для ex из командной строки?

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