Tentando compilar X264 e FFMPEG para iPhone - “Faltando o braço de arquitetura necessário no arquivo”
Pergunta
Estou tentando compilar o X264 para uso em um aplicativo para iPhone. Vejo que há instruções sobre como compilar o FFMPEG para uso na plataforma aqui: http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-october/076618.html , mas não consigo encontrar nada tão completo para compilar o X264 no iPhone. Eu encontrei esta árvore de origem: http://gitorious.org/x264-arm Isso parece ter suporte para a plataforma do ARM.
Aqui está minha linha de configuração:
./configure --cross-prefix=/usr/bin/ --host=arm-apple-darwin10 --extra-cflags="-B /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/usr/lib/ -I /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk/usr/lib/"
... e dentro configure
Estou usando o script de preprocessador a gás (primeiro link acima) como meu assembler:
gas-preprocessor.pl gcc
Quando começo a compilar, ele se afasta por um tempo, depois cospe esses avisos e uma enorme lista de símbolos indefinidos:
ld: warning: option -s is obsolete and being ignored ld: warning: -force_cpusubtype_ALL will become unsupported for ARM architectures ld: warning: in /usr/lib/crt1.o, missing required architecture arm in file ld: warning: in /usr/X11R6/lib/libX11.dylib, missing required architecture arm in file ld: warning: in /usr/lib/libm.dylib, missing required architecture arm in file ld: warning: in /usr/lib/libpthread.dylib, missing required architecture arm in file ld: warning: in /usr/lib/libgcc_s.1.dylib, missing required architecture arm in file ld: warning: in /usr/lib/libSystem.dylib, missing required architecture arm in file Undefined symbols:
Meu palpite seria que o problema tem a ver com o aviso "ADEXIONADO DE ARQUITETURA DE ARQUITATURA NÓGIA", alguma idéia?
Solução
Verifique este site: http://github.com/gabriel/ffmpeg-iphone-buildArquivo: Build-X264-Armv6
Você vai adorar!
Tchau, boa sorte!
Outras dicas
Muitos dos desenvolvedores experimentam problemas de compilação de fontes do FFMPEG após a transição para o Xcode 4.3. Isso se deve principalmente ao fato de que, diferentemente das versões anteriores, o Xcode4.3 é um pacote e não inclui as ferramentas da linha de comando inicialmente.
Tentamos construir o script universal; Você pode fazer o download do ambiente completo para a construção do FFMPEG junto com o xcode4.3 aqui: https://github.com/melnikov/ffmpeg4iphone_4.3
Pré -requisitos:
- Você precisa ter o xcode4.2 ou 4.3 instalado no seu Mac
- Você precisa ter as ferramentas de linha de comando Xcode instaladas (podem ser instaladas via xcode -> preferências -> downloads)
- Você precisa ter o git para o Mac instalado.
Instruções e explicações:
- Coloque o script de construção em algum diretório (digamos,/tmp/ffbuild), defina o sinalizador executável (executando 'chmod +x ./build)
- execute o script. O que isso fará:
- Ele irá verificar a versão mais recente do FFMPEG no diretório FFMPEG (você pode comentar com segurança se você já fez check -out ffmpeg no diretório atual)
- Ele tentará detectar a localização do seu xcode.app e sairá se o Xcode não estiver instalado
- Ele tentará localizar o GCC dentro do xcode.app e sairá se não for encontrado (isso pode acontecer se as ferramentas de comando xcode não estiverem instaladas)
- Se as etapas acima funcionarem sem problemas, o script irá
- Crie a pasta Build_Results
- Posteriormente, executará o FFMPEG Configurar e criará 3 arquiteturas diferentes (ARMV6, ARMV7, I386) e as colocará em respectivos diretórios dentro da pasta Build_Results
- Executará o LIPO e criará Libs Universal (e os colocará na pasta Build_Results/Universal).
BTW, eu testei o script em vários Macs do meu colega, e alguns deles tendem a não retornar nenhum resultado no mdfind para xcode.app. Portanto, se o script retornará 'Xcode não estiver instalado', sinta -se à vontade para definir a variável xcodepath para o caminho para xcode.app