2010-02-16 10 views
12

Zastanawiam się, czy istnieje sposób, aby dowiedzieć się, które g++ flagi kompilator/linker używane w tworzeniu biblioteki tylko binarne.Czy mogę określić, które flagi kompilatora/łącznika używane są do utworzenia biblioteki współużytkowanej tylko dla binarnych?

Na przykład może istnieć wspólna biblioteka innej firmy (tylko pliki .h/.so są dostępne).

Więc myślę, że dobrym pomysłem byłoby użycie tych samych flag g ++ podczas kompilowania i łączenia mojej własnej aplikacji (czyli przy użyciu biblioteki tylko dla binarnych firm trzecich).

Konkretnie pytam na flagi kompilatora jak

  • -fno-inline
  • -pthreads
  • -mtune = arch
  • -O2

a także to byłoby które były używane:

  • -fPIC lub -fPIC
  • -fexceptions
  • -pthreads

i tak dalej.

Odpowiedz

0

Nie wierzę, ponieważ nie istnieje sekcja w formacie ELF dla tej informacji. W Linuksie, jeśli użyjesz "readelf -a" do zrzucenia wszystkich informacji, nie ma nic o tym, jak ten plik powstał w ten sposób.

1

Nie ma systematycznych sposobów robienia tego. Możesz sprawdzić, czy biblioteka jest połączona z libpthread jako wskazanie, czy użyto -pthreads. W przypadku kodu PIC/non-PIC, możesz spróbować this. Poziom optymalizacji, strojenie i inne będą trudniejsze do ustalenia.

Powiązane problemy