ffmpeg не будет ./configure в iOS5.1 - PullRequest
4 голосов
/ 02 апреля 2012

Я пытаюсь собрать ffmpeg на iOS5.1 (armv7), когда я пытаюсь запустить ./configure так:

./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver
   --enable-cross-compile --arch=arm --target-os=darwin
   --cc=/applications/xcode.app/contents/Developer/usr/bin/gcc
   --as='gas-preprocessor/gas-preprocessor.pl /applications/xcode.app/contents/Developer/usr/bin/gcc'
   --sysroot=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
   --cpu=cortex-a8 --extra-cflags='-arch armv7'
   --extra-ldflags='-arch armv7 -isysroot /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk'
   --enable-pic

Я получаю следующую ошибку:

/applications/xcode.app/contents/Developer/usr/bin/gcc
is unable to create an executable file.
C compiler test failed.

Если вы считаете, что configure допустил ошибку, убедитесь, что вы используете последнюю версию версия из SVN. Если последняя версия не работает, сообщите о проблеме ffmpeg-user@mplayerhq.hu список рассылки или IRC #ffmpeg на irc.freenode.net. Включите файл журнала «config.err», созданный при настройке, так как это поможет решение проблемы.

Может ли кто-нибудь предоставить правильные параметры в iOS5.1?

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

инструкции изменились, поскольку в xcode SDK больше нет gcc.

Что вам нужно сделать, это указать, что cc - это компилятор iphoneos, использующий xcrun, поэтому там, где мы ранее просто указывали путь к gcc, теперь мы собираемся поставить ссылку на xcrun для clang.

Я скачал последнюю версию ffmpeg из git, удостоверился, что у меня есть копия gas-preprocess.pl на пути, а затем изменил строку --cc= на следующую:

--cc='xcrun -sdk iphoneos clang -mios-version-min=5.1'

(это предполагает, что вы создаете и все еще нацеливаетесь на ios 5.1 - если вы нацеливаетесь на более новую версию, тогда вы меняете значение на более новую версию. Я указал 7.0 для своей, но я также использую iOS 8.4 SDK, поэтому строка конфигурации выглядит так:

./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver \
 --enable-cross-compile --arch=arm --target-os=darwin \
 --cc='xcrun -sdk iphoneos clang -mios-version-min=7.0' \
 --sysroot=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk \
 --cpu=cortex-a8 --extra-cflags='-arch armv7' \
 --extra-ldflags='-arch armv7 -isysroot /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.4.sdk' \
 --enable-pic

, который собирает ffmpeg из ios8.4 SDK. Эти инструкции должны продолжать работать; вам просто нужно заменить соответствующие значения 7.0 / 8.4 на более новые SDK.

СТАРЫЙ ОТВЕТ

Вот что происходит, когда вы пытаетесь скомпилировать код iOS, используя версию компилятора MacOS.

Необходимо указать версию gcc для iPhoneOS, используя:

./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver
   --enable-cross-compile --arch=arm --target-os=darwin
   --cc=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc
   --as='gas-preprocessor/gas-preprocessor.pl /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'
   --sysroot=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk
   --cpu=cortex-a8 --extra-cflags='-arch armv7'
   --extra-ldflags='-arch armv7
   -isysroot /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk'
   --enable-pic

Первым шагом при попытке отладки проблем с configure является просмотр файла config.log, сгенерированного как часть прогона.

1 голос
/ 09 апреля 2012

В вашем скрипте configure есть несколько моментов, которые я могу сказать.Прежде всего, вы используете:

--cc=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc 

Это неправильно.Вы должны использовать специфичные для архитектуры компиляторы gcc, поэтому в вашем случае (armv7) вы должны использовать, например:

--cc=/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1

Обратите внимание, что вы вызываете arm-apple-darwin10-gcc-4.2.1 версию собственного gcc от apple.Так как это только пример, посмотрите на ../Developer/../bin/ и используйте самую последнюю версию arm-apple-darwin10-gcc-x.x.x, которая у вас есть.Я вижу, что есть много ответов на SO, которые предлагают вам сделать это так, как вы это сделали, это просто неправильно!и не работает для arm, он будет работать только для i386 (симулятор).

Вам нужно будет обновить директиву ассемблера для отражения, используя ту же версию gcc:

--as='gas-preprocessor/gas-preprocessor.pl /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-gcc-4.2.1'

Кроме того, не ставьте -arch armv7 в свой --extra-cflags, вы можете получить error: unrecognized command line option "-arch"

Наконец, и в зависимости от вашей ситуации, могу ли я предложить следующее, в дополнение к тому, что у вас уже есть:

--disable-bzlib --disable-gpl --disable-shared --enable-static --disable-mmx --disable-debug --disable-neon

и измените на это:

--extra-cflags='-pipe -Os -gdwarf-2 -isysroot /applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk -m${thumb_opt:-no-thumb} -mthumb-interwork'

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...