O arquivo é universal (três fatias), mas não contém um erro de fatia (n) do ARMv7-s para bibliotecas estáticas no iOS, de qualquer maneira para ignorar?


403

I atualizado Xcode versão e quando usando bibliotecas estáticas externos, eu recebo essa mensagem:

ld: file é universal (3 fatias), mas não contém uma (n) fatia armv7s: / file / location para a arquitetura armv7s clang: error: o erro do linker falhou com o código de saída 1 (use -v para ver a chamada)

Existe alguma maneira de contornar isso e adicionar suporte à biblioteca se o desenvolvedor da biblioteca ainda não atualizou sua biblioteca?


Esta parece ser uma boa solução para agora - galloway.me.uk/2012/09/hacking-up-an-armv7s-library
Rajavanya Subramaniyan

Respostas:


418

Se você deseja remover o suporte para qualquer arquitetura, por exemplo, ARMv7-s no seu caso, use o menu Projeto -> Configurações de Construção -> remova a arquitetura de "arquiteturas válidas".

Você pode usar isso como uma solução temporária até que a biblioteca seja atualizada. Você precisa remover a arquitetura do seu projeto principal, não da biblioteca.

Como alternativa, você pode definir o sinalizador para "Build Active Architecture Only" da sua configuração de depuração como Sim. Deixe "Build Active Architecture Only" da configuração da versão em Não, apenas para que você receba um lembrete antes de liberar que você deve atualizar as bibliotecas de terceiros que estiver usando.


11
você não precisa recompilar a biblioteca. você pode remover esse sinalizador do projeto que está usando a biblioteca.
Nicholas

4
Funcionará, pois os aplicativos antigos que não foram compilados com o suporte do armv7s também precisam ser executados. Mas você perderá algumas otimizações específicas. Esta deve ser uma solução temporária de qualquer maneira.
Nicholas

2
Quadro Dropbox foi atualizado para este problema ver forums.dropbox.com/topic.php?id=90014
railwayparade

6
Remover armv7s da lista de arquiteturas válidas funcionou para mim, no entanto, o mesmo ocorreu com a remoção de arquiteturas. Em ambos os casos, no entanto, eu No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).pegaria o vinculador que só poderia resolver adicionando i386à lista de arquiteturas válidas.
precisa saber é o seguinte

6
Não, armv7s é o conjunto de instruções do processador A6 que está sendo usado no iPhone 5. Como o A6 é compatível com versões anteriores, ele ainda executará o conjunto de instruções armv7.
Nicholas

191

Simplesmente alternei entre "Build Active Architecture Only" e "Yes" nas configurações de construção do destino, e agora está tudo bem!


11
@ Blasco73 Você sabe mesmo que é incrível? Você deve. Aqui vai, senhor, é incrível!
Thandasoru 24/12/12

15
Como isso pode ser uma boa solução? Ele remove o erro, mas você só tem compilação para o arco atual, nem todos no mercado ...
esbenr

27

Tente remover armv7s da "Arquitetura válida" do projeto para lançar este problema para o telefone iOS 5.1


13

Acabei de publicar uma correção aqui que também se aplicaria neste caso - basicamente, você faz uma busca e substituição hexadecimal na sua biblioteca externa para fazê-la pensar que é o código do ARMv7s. Você deve poder lipodividi-lo em três bibliotecas estáticas, duplicar / modificar o ARMv7 e usá-lo liponovamente para montar uma nova biblioteca para todas as quatro arquiteturas.


5

Suporte ao Flurry para iPhone 5 (ARMv7s) Como mencionei no post de ontem, o Flurry começou a trabalhar em uma versão do iOS SDK para dar suporte ao processador ARMv7s no novo iPhone 5 imediatamente após o anúncio na quarta-feira.

Fico feliz em dizer que o trabalho está concluído e o SDK agora está disponível no site.


4

use o menu Projeto -> Configurações de compilação ->

remova armv7s das "arquiteturas válidas". Se o padrão foi escolhido, exclua-o e adicione armv7.


1

Caso isso aconteça com alguém. Criei minha própria biblioteca para usar com um código de terceiros. Enquanto eu o construía para entregar, deixei acidentalmente meu iPhone 4S conectado e, portanto, o Xcode construiu minha biblioteca apenas para a arquitetura conectada, em vez de seguir as configurações do projeto. Remova todos os dispositivos conectados e reconstrua a biblioteca, vincule-a e tudo ficará bem.

Espero que ajude.


0

No meu caso, eu estava vinculando a uma biblioteca de terceiros um pouco antiga (desenvolvida para iOS 6, no XCode 5 / iOS 7). Portanto, eu tive que atualizar a biblioteca de terceiros, fazer uma Limpeza e Compilação, e agora ela é compilada com êxito.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.