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

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

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

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

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

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

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

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

и т. Д.

Ответы [ 2 ]

1 голос
/ 03 января 2011

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

0 голосов
/ 17 февраля 2010

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

...