2010-02-16 10 views
12

Me pregunto si hay una manera de averiguar qué indicadores del compilador/enlazador g++ se usaron para crear una biblioteca de solo binario.¿Puedo determinar qué indicadores de compilador/enlazador se usaron para crear una biblioteca compartida de solo binario?

Por ejemplo, podría haber una biblioteca compartida de terceros (solo archivos .h/.so están allí).

Así que creo que sería una buena idea usar los mismos indicadores de g ++ cuando compile y vincule mi propia aplicación (es decir, usando la biblioteca de terceros de solo binario).

Específicamente estoy pidiendo opciones del compilador como

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

y también sería de interés qué indicadores de vinculador se han utilizado:

  • -fPIC o -fPIC
  • -fexceptions
  • -pthreads

y así sucesivamente.

Respuesta

0

No lo creo, ya que no parece haber una sección en el formato ELF para esa información. En Linux, si usa 'readelf -a' para volcar toda la información, no hay nada acerca de cómo se obtuvo el archivo de esa manera.

1

No hay una forma sistemática de hacerlo. Puede ver si la biblioteca está vinculada a libpthread como una indicación de si se utilizó -pthreads. Para el código PIC/no PIC, puede intentar this. El nivel de optimización, ajuste y otros serán mucho más difíciles de determinar.

Cuestiones relacionadas