disculpo porque por el momento no tengo el medio ambiente para experimentar y resolver las siguientes preguntas a mí mismo:Preguntas sobre enlazador de GCC
1) Digamos que tengo cuatro archivos de la biblioteca: libmylib_super.a
y libmylib_super.so
, mylib_dumb.a
y mylib_dumb.so
. Si bien la especificación de las bibliotecas para vincular a, ¿cuáles son las diferencias entre los siguientes enfoques:
A) -l:libmylib_super.a
B) -llibmylib_super
C) -lmylib_super
D) -lmylib_dumb
2) Definición de -static
de la página hombre :
En los sistemas que admiten la vinculación dinámica , esto impide vincular ingenio h las bibliotecas compartidas. En otros sistemas , esta opción no tiene ningún efecto.
¿Tiene esta opción de enlazador algo que ver con la pregunta n. ° 1? O ... ¿por casualidad interferirán el uno con el otro?
Gracias.
--- --- editado 2009-12-28
acabo de recibir mi entorno y experimentar un poco, mediante la vinculación a impulsar fecha_hora biblioteca. Supongamos que tengo tres archivos de biblioteca: libboost_date_time-mt-d.a
, libboost_date_time-mt-d.so.1.41.0
, libboost_date_time-mt-d.so -> libboost_date_time-mt-d.so.1.41.0
(enlace sym).
A.1) -l:libboost_date_time-mt-d.a
==> enlace OK, el binario funciona incluso sin el archivo de la biblioteca.
A.2) -l:libboost_date_time-mt-d.a
con -static
==>vinculación de error/usr/bin/ld: cannot find -lm
C.1) -lboost_date_time-mt-d
==> une bien, las obras binarias sino que requiere el archivo de biblioteca compartida.
C.2) -lboost_date_time-mt-d
con -static
==>vinculación de error/usr/bin/ld: cannot find -lm
Cualquier idea sobre el error en A.2 y C.2?
Además, mientras se ejecuta el programa en C.1, parece buscar el archivo de la biblioteca compartida con el nombre libboost_date_time-mt-d.so.1.41.0
pero no el libboost_date_time-mt-d.so
. ¿No sería inconveniente si el programa se ejecuta en un sistema sin la versión exacta de la biblioteca? ¿Cuál podría ser la forma más práctica de manejar la versión al usar una biblioteca compartida?
Corrección: cuando '-estático' se especifica, solo' .a' se buscará , no '.so' – iamamac
¡Uy sí, gracias! –
Puede encontrar m Más información sobre las diversas opciones en este sitio web: http://gcc.gnu.org/onlinedocs/gcc/ –