2009-08-06 13 views
8

Tengo problemas para vincular una biblioteca compartida usando gcc 3.2.3 con binutils 2.18. Cuando trato de enlazar la librería me sale el siguiente error:Ayuda con linker failer: .gnu.linkonce.t

.gnu.linkonce.t _... hace referencia en la sección .rodata: se define en la sección .gnu.linkonce.t desechado ...

I He hecho una buena cantidad de google en esto y la mayoría de los lugares parecen indicar que se trata de una regresión introducida en binutils 2.17 y más tarde corregida en 2.18.50, pero tenía curiosidad si alguien sabía si había alguna solución en particular para el problema sin tener para tocar binutils y gcc.

Gracias.

Respuesta

6

Esto resultó ser un resultado extraño donde el sistema no coincidía con gcc con binutils diferentes./usr/bin/gcc se estaba utilizando (3.2.3) y/usr/local/bin/ld se estaba utilizando con/usr/local/bin al frente de/usr/bin en la ruta. Cuando cambiamos para que/usr/bin estuviera en la parte frontal de la ruta, se llamaba/usr/bin/ld (binutils 2.14) y esto parece haber resuelto el problema.

0

Este error se encontró y se informó aquí GCC bugzilla, un pequeño archivo de prueba que se centra en el error que se proporcionó en los comentarios que me pareció muy útil para no perder el tiempo. Este error se corrigió comenzando en GCC 3.4.6.

Tuve este problema al usar GCC 3.3.1 con binutils 2.15.92 y binutils 2.17.50 y ambos no funcionaron. Entonces, para mí, claramente no era la mezcla de las versiones GCC y binutils que hacían que el problema.

Si debe utilizar una versión anterior de GCC, puede usar este parche provisto por H.J. y hacerlo manualmente luego reconstruir su antiguo GCC nuevamente.

Fix without COMDAT group

Fix with COMDAT group

Compruebe los archivos adjuntos en los enlaces proporcionados que muestra el diff exacta para la corrección.

Tengo mismo lo hice y lo ha probado y funcionó con éxito, parches GCC 3.3.1 con el primer punto de referencia "sin grupo COMDAT", lo reconstruyó y lo utilizó con binutils 2.15.92 y binutils 2.17.50.