Я добавил ffmpeg порт iPhone в свою библиотеку, и я могу способный использовать несколько ее функций как avcodec_init ().. без любых ошибок. Но когда я включаю этот вызов функции "avcodec_register_all", XCode дает ошибку после компиляции
Сообщение об ошибке:
*---------------ld: ldr 12-разрядное смещение из диапазона (4 276 макс. +/-4096) в _CFRelease$stub в _CFRelease$stub от/Users/foxit/Documents/CameraTest/build/CameraTest.build/Debug-iphoneos/CameraTest.build/Objects-normal/armv6/CameraTest
Команда/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 перестала работать с кодом выхода 1
*-------------
Кто-либо знает что случилось с этим?
С уважением,
Raghu
Эта проблема существует в iPhone OS 3.1 или более поздней версии при сборке в Xcode. Попробуйте заново установить порядок ссылок библиотек на этапе библиотеки ссылок вашей целевой библиотеки. Я обсуждал эту проблему в: http://www.galloway.me.uk/2009/12/ldr-12-bit-displacement-out-of-range/
Проблема, присущая iPhone. SDK 3.1 и новее. Придется подождать, пока Apple исправит это, или нам придется внести некоторые изменения в отслеживание и ошибки.
В нашем случае просто переупорядочить libavfilter и libavcodec до последнего просто сработает.
То же, что и , эта проблема?
Есть предложение:
Выберите цель развертывания «iPhone OS 3.0» или более раннюю. Это известная проблема компоновщика Xcode с целевыми объектами развертывания «iPhone OS 3.1» и более поздних версий.
Поскольку я использую проект XCode, созданный CMake, у меня нет той гибкости, которую я хотел бы при изменении порядка строк ссылок. Некоторое время я смотрел на страницу руководства ld (1) и обнаружил следующее:
-no_order_inits
"Когда параметр -order_file не используется , компоновщик размещает функции в {{1} } порядок файлов объектов и перемещает все подпрограммы инициализатора в начало раздела __text и функции терминатора в конец. Используйте эту опцию , чтобы отключить автоматическая перестановка инициализаторов и терминаторов. "
Добавление этого в строку ссылки заставило ошибку исчезнуть.
Я смог избавиться от ошибки, убрав опцию компилятора "Compile For Thumb".
Вот мои настройки:
Base SDK: iPhone Device 4.0
iPhone OS Deployment Target: 3.1.3
Я добавил -no_order_inits в опции компоновщика, но это не сработало для меня.
Если вы выберете цель развертывания 3.0, то вы также не получите ошибку.
BTW, я также использую библиотеки FFMPEG и libMMS.