Могу ли я определить, какие флаги компилятора/компоновщика используются для создания только двоичной библиотеки?
Мне интересно, есть ли способ узнать, какие g++
флаги компилятора/компоновщика используются при создании библиотеки только для двоичных файлов.
Например, может существовать сторонняя разделяемая библиотека (только файлы .h/.so).
Поэтому я думаю, что было бы неплохо использовать те же самые флагов g++ при компиляции и привязке моего собственного приложения (использующего только стороннюю библиотеку).
В частности, я запрашиваю флаги компилятора, например
- -fno-рядный
- -pthreads
- -mtune = арка
- -O2
и также было бы интересно, какие флаги компоновщика были использованы:
- -fpic или -fPIC
- -fexceptions
- -pthreads
и т.д.
Ответы
Ответ 1
Нет систематического способа сделать это. Вы можете посмотреть, связана ли библиотека с libpthread как признаком использования -pthreads
. Для кода PIC/non-PIC вы можете попробовать this. Оптимизация уровня, настройка и другие будут намного сложнее определить.
Ответ 2
Я не верю, так как для этой информации не существует раздела в формате ELF. В Linux, если вы используете "readelf -a", чтобы сбрасывать всю информацию, нет ничего о том, как файл получил этот путь.