Pergunta

Estou tentando compilar a ligação do ZerOMQ C para poder usá -lo no iPhone, aqui estão minhas opções de configuração:

./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1 CFLAGS="-pipe -std=c99 -Wno-trigraphs -fpascal-strings -O0 -Wreturn-type -Wunused-variable -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=3.1.2 -gdwarf-2 -mthumb -I/Library/iPhone/include -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk -mdynamic-no-pic" CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar AS=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as LIBTOOL=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool STRIP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/strip RANLIB=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ranlib

Na verdade, ele configura e compila bem, mas quando eu o adiciono à seção Xcode Frameworks, recebo aviso: ld: warning: in /path/to/app/libzmq.a, file was built for unsupported file format which is not the architecture being linked (armv7) E muito símbolo não encontrou erros.

Se eu alterar a arquitetura ativa atual do ARMV6 para o ARMV7, a mensagem de aviso o mudará para o ARMV6. O que estou fazendo errado ?

Obrigado, Dan

Foi útil?

Solução

Parece que você está construindo um binário universal do ARMV6/ARMV7 para o iPhone (esse é o padrão, o que faz sentido). Isso significa que você precisa construir uma biblioteca universal para vincular. Construir Ambas bibliotecas e depois usar lipo para combinar os dois.

Por exemplo, construa o ARMV6 e coloque -o em armv6/libfoo.a, e o ARMV7 em armv7/libfoo.a. Então corra

lipo -arch armv6 armv6/libfoo.a -arch armv7 armv7/libfoo.a -output libfoo.a -create

Para criar a biblioteca universal libfoo.a.

Outras dicas

Dada a mensagem de aviso de ld, meu palpite é que você não está compilando a biblioteca para a plataforma correta. E dado que você está usando configure, meu palpite é que você está tentando compilar a biblioteca fora do Xcode e, em seguida, trazê -la para o Xcode posteriormente para vinculá -lo.

Talvez você possa tentar executar o Configure para configurar seus cabeçalhos, mas fazer o passo real de compilação dentro do Xcode?

Existem muitas questões relacionadas aqui sobre a compilação de bibliotecas C ou C ++ de terceiros (externos) para uso em projetos de iPhone.

Criando biblioteca estática para iPhone

Timidez: preciso de ajuda para compilar esta biblioteca para o iPhone

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