Обнаружить GCC флаги времени компиляции двоичного файла - PullRequest
22 голосов
/ 10 октября 2008

Есть ли способ узнать, с какими флагами gcc был скомпилирован конкретный двоичный файл?

Ответы [ 4 ]

23 голосов
/ 10 октября 2008

Быстрый просмотр документации GCC ничего не дает.

Ребята из Boost являются одними из самых умных разработчиков C ++, и они прибегают к именованию соглашений , потому что это, как правило, невозможно иначе (исполняемый файл мог быть создан на любом количестве языков, на любом количестве версий компилятора, в конце концов).


(добавлено намного позже): Оказывается, GCC имеет эту функцию в 4.3, если запрашивается при компиляции кода :

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

12 голосов
/ 04 декабря 2008

Экспериментальное доказательство:

diciu$ gcc -O2 /tmp/tt.c -o /tmp/a.out.o2
diciu$ gcc -O3 /tmp/tt.c -o /tmp/a.out.o3
diciu$ diff /tmp/a.out.o3 /tmp/a.out.o2 
diciu$

Я принимаю это как нет, поскольку двоичные файлы идентичны.

3 голосов
/ 10 октября 2008

Я тот, кто попросил Брайана опубликовать это изначально. Мой вопрос был связан с двоичным файлом самбы. Я обнаружил, что вы можете запустить smb -b, чтобы получить информацию о том, как он был построен.

2 голосов
/ 10 октября 2008

Я так не думаю.

Вы можете увидеть, есть ли у него символы отладки, что означает, что использовалась опция -g;) Но я не могу придумать, каким образом вы могли бы узнать, какие каталоги использовались для поиска включаемых заголовков, например.

Возможно, лучший ответ возможен, если вы нацелены только на определенный флаг; например если вы хотите знать, был ли установлен флаг "..." при компиляции этого двоичного файла или нет. В таком случае, что это за флаг?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...