2012-07-24 17 views
9

Se movió de gcc 4.5 a gcc 4.6 y ahora no se vincula con las bibliotecas que no se usan en tiempo de compilación (es decir, si no se importan símbolos de ellas).Fuerza para vincular con la biblioteca compartida no utilizada

Sin embargo, el objetivo de estas bibliotecas es que ejecuten constructores estáticos y, por lo tanto, estén disponibles para la aplicación en tiempo de ejecución (registre sus símbolos).

¿Hay alguna manera de forzar que gcc se vincule con todas las bibliotecas enumeradas a través de -l?

+1

Probablemente un cambio en la opción 'AS-needed'. Intente preceder a sus banderas '-l' en' -Wl, -no-as-needed' (no puede recordar la sintaxis exacta y no puede acceder a un compilador en este momento) – Mat

Respuesta

9

Parece que necesita -Wl,--no-as-needed para deshabilitarlo por completo. O bien, --no-as-needed -lfoo --as-needed para deshabilitar "según sea necesario" solo para libfoo.

Fuente: https://lists.ubuntu.com/archives/ubuntu-devel/2010-November/031991.html

EDIT: Ah parece Mat en realidad me vencieron a esto en el comentario :-)

+0

Parece que no ayuda, ahora también lo intento con --copy-dt-needed-entries. ¿Quizás necesites recompilar los archivos de fuentes, no solo volver a vincular? – queen3

+0

Reconstrucción total ayudada. – queen3

Cuestiones relacionadas