2012-04-02 3 views
4

Я пытаюсь построить FFmpeg на iOS5.1 (ARMv7), когда я пытаюсь запустить ./configure так:FFmpeg не ./configure в iOS5.1

./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. 

If you think configure made a mistake, make sure you are using the latest version from SVN. If the latest version fails, report the problem to the [email protected] mailing list or IRC#ffmpeg on irc.freenode.net. Include the log file "config.err" produced by configure as this will help solving the problem.

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

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

ответ

4

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

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

Я скачал последнюю версию FFmpeg от мерзавца, удостоверился, у меня была копия gas-preprocess.pl на пути, а затем изменил --cc= строку следующего содержания:

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

(это предполагает, что вы но я также использую 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 из SDK ios8.4. Эти инструкции sh ould продолжает работать; вам просто нужно заменить соответствующие значения 7.0/8.4 для новых SDK.

OLD ОТВЕТ

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

Вы должны указать версию 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 файл, который генерируется в рамках прогона.

+0

При запуске измененной команды я получаю это в файле config.log: llvm-gcc-4.2: Недопустимое имя арки: armv7 --extra-ldflags = -arch Ошибка компилятора C. –

+0

Поскольку последние версии Xcode (например, 6.4) не имеют gcc в данном месте (/applications/xcode.app/contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc), что нам делать? – AnujAroshA

+0

Учитывая эти инструкции для iOS5, я не удивлен, что все изменилось. Я обновлю инструкции. – Petesh

1

В вашем скрипте 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. Так как это всего лишь пример, посмотрите на свой ../Developer/../bin/ и используйте последние arm-apple-darwin10-gcc-x.x.x, которые у вас есть. Я вижу, что на SO есть много ответов, которые предполагают, что вы делаете это так, как вы это делали, это просто неправильно! и не работает на руку, он будет работать только для 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' 

Надеется, что это помогает.

Смежные вопросы