GCC: configure a arquitetura para passar ao vinculador

1

O compilador GNU C passa o nome da arquitetura errada para o vinculador. Por exemplo, gcc helloworld.i lança o erro ld: unknown/unsupported architecture name: -arch arm . Depois de algumas experiências com LD, parece que armv7 é a arquitetura que eu deveria usar. As operações de compilação e montagem parecem funcionar bem.

Parece que a coleção de compiladores (iphone-gcc) foi projetada para funcionar com uma versão mais antiga do vinculador fornecida por meio do Darwin CC Tools de código aberto, não o LD64 mais recente que eu instalei, fornecido como independente Coleção de ferramentas CC. Existe alguma maneira de dizer ao GCC para passar outra arquitetura para o vinculador? Passar -Wl,-arch,armv7 ou -Xlinker -arch -Xlinker armv7 para o GCC fornece o mesmo erro.

    
por osvein 09.06.2014 / 14:10

3 respostas

3

Você não deve atualizar seu conjunto de ferramentas gradativamente. As partes precisam trabalhar juntas. As ferramentas GNU permitem tanta variação que é essencial que as peças sejam configuradas para funcionarem juntas, especialmente para um compilador cruzado .

Se você precisar de um novo ld por algum motivo, deverá criar um conjunto completo de ferramentas para suportá-lo.

    
por 09.06.2014 / 15:56
1

Siga o conselho da @Warren Young e atualize o resto do conjunto de ferramentas em vez de atualizar apenas o vinculador.

Para o Darwin 9 e, mais tarde, para o ARM, o toolchain da CoolStar disponível no site Recomenda-se o repositório BigBoss. O conjunto de ferramentas contém o LLVM + Clang como um substituto para o iphone-gcc desatualizado, assim como o LD64 e as mais novas ferramentas CC Darwin. Veja o wiki do iphone-dev (um pouco desatualizado) para uma comparação mais detalhada entre o iphone-gcc e o LLVM + Clang.

    
por 09.06.2014 / 20:27
0

Se você usar a ferramenta EasyBuild, poderá fornecer automaticamente várias toolchains: link
fi. veja o ClangGCC

Agora, o GCC tem um sistema de spec strings para especificar como funciona com & alimenta outros programas: link

Sua tarefa seria ajustá-los às suas necessidades; Uma vez feito, por favor, documente-o e / ou crie uma cadeia de ferramentas do EasyBuild em que os outros possam confiar!

    
por 10.06.2014 / 14:38