Can I determine which compiler/linker flags where used to create a binary-only shared library?
I am wondering if there is a way to find out which g++
compiler/linker flags where used in creating a binary-only library.
For example there might be a 3rd party shared library (only .h/.so files are there).
So I think it would be a good idea to use the same g++ flags when compiling and linking my own application (that is using the binary-only 3rd party library).
Specifically I am asking for compiler flags like
- -fn开发者_如何学编程o-inline
- -pthreads
- -mtune=arch
- -O2
and also it would be of interest which linker flags have been used:
- -fpic or -fPIC
- -fexceptions
- -pthreads
and so on.
There is no systematic way of doing this. You can look if the library is linked to libpthread as an indication of whether -pthreads
was used. For PIC/non-PIC code, you may want to try this. Optimization level, tuning and others will be much harder to determine.
I don't believe so as there does not appear to be a section in the ELF format for that information. On Linux, if you use 'readelf -a' to dump all the information, there's nothing about how the file got that way.
精彩评论