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

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

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

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

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)\"" 
  • Как я могу понизить gcc 4.6.3 до 4.4.3?
  • Компиляция g ++ из исходного кода приводит к повреждению стандартной библиотеки. error: ':: realloc' не был объявлен
  • Как повлиять на выбор компилятора системами сборки, такими как CMake
  • Проблема с диспетчером пакетов opkg в встроенном потоке Angstrom на процессоре Colibri ARM v7
  • Узнайте варианты компиляции glibc
  • Использование флагов компиляции gcc
  • Каков самый быстрый способ установки GCC на Wind River 3.02?
  • gcc создает ошибочный «Нет такого файла или каталога» под Cygwin
  • Оптимизирует ли размер для уменьшения использования памяти во время выполнения, а также двоичный размер?
  • Ошибки кросс-компиляции с distcc
  • LFS 7.10 - почему я получаю сообщение об ошибке при использовании команды make для expect-5.45
  • перекрестная компиляция gcc не выполняется
  • Linux и Unix - лучшая ОС в мире.