Pergunta

Estou tendo problemas para vincular uma biblioteca compartilhada usando o GCC 3.2.3 com o Binutils 2.18. Quando tento vincular a biblioteca, recebo o seguinte erro:

.gnu.linkonce.t _... referenciado na seção .rodata: definido na seção descartada .gnu.linkonce.t ...

Eu fiz uma quantidade razoável de pesquisas sobre isso e a maioria dos lugares parece indicar que é uma regressão introduzida no Binutils 2.17 e posteriormente fixada em 2.18.50, mas fiquei curioso se alguém soubesse se havia alguma solução alternativa para o problema sem tendo que tocar em Binutils e GCC.

Obrigado.

Foi útil?

Solução

Acabou sendo um resultado estranho em que o sistema estava incompatível com um GCC com um binutils diferentes. /usr/bin/gcc estava sendo usado (3.2.3) e/usr/local/bin/ld estava sendo usado com ele devido a/usr/local/bin em frente a/usr/bin no caminho. Quando trocamos para que/usr/bin estivesse na frente do caminho, o apropriado/usr/bin/ld foi chamado (Binutils 2.14) e isso parece ter resolvido o problema.

Outras dicas

Este bug foi encontrado e foi relatado aqui GCC Bugzilla, um pequeno teste que se concentra no bug foi fornecido nos comentários que achei realmente útil para não perder tempo. Este bug foi corrigido começando GCC 3.4.6.

Eu tive esse problema enquanto uso GCC 3.3.1 com binutils 2.15.92 e binutils 2.17.50 E ambos não funcionaram. Então, para mim, claramente não era a mistura de GCC e binutils versões que fizeram o problema.

Se você deve usar um mais velho GCC versão que você pode usar este patch fornecido por H.J. e faça isso manualmente, então reconstrua seu antigo GCC novamente.

Corrigir sem grupo Comdat

Corrigir com o Comdat Group

Verifique os anexos nos links fornecidos que mostram o diferencial exato para a correção.

Eu mesmo fiz isso e testei e funcionou com sucesso, corrigindo GCC 3.3.1 com a primeira correção "sem grupo de comdat", reconstruí -lo e usei com binutils 2.15.92 e binutils 2.17.50.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top