Подтвердить что ты не робот

Могу ли я определить, какие флаги компилятора/компоновщика используются для создания только двоичной библиотеки?

Мне интересно, есть ли способ узнать, какие g++ флаги компилятора/компоновщика используются при создании библиотеки только для двоичных файлов.

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

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

В частности, я запрашиваю флаги компилятора, например

  • -fno-рядный
  • -pthreads
  • -mtune = арка
  • -O2

и также было бы интересно, какие флаги компоновщика были использованы:

  • -fpic или -fPIC
  • -fexceptions
  • -pthreads

и т.д.

4b9b3361

Ответ 1

Нет систематического способа сделать это. Вы можете посмотреть, связана ли библиотека с libpthread как признаком использования -pthreads. Для кода PIC/non-PIC вы можете попробовать this. Оптимизация уровня, настройка и другие будут намного сложнее определить.

Ответ 2

Я не верю, так как для этой информации не существует раздела в формате ELF. В Linux, если вы используете "readelf -a", чтобы сбрасывать всю информацию, нет ничего о том, как файл получил этот путь.