Ошибка при компиляции проекта XCode (iPhone)

Я добавил 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

5
задан Sridhar Bollam 4 March 2010 в 15:22
поделиться

4 ответа

Эта проблема существует в 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 до последнего просто сработает.

3
ответ дан 14 December 2019 в 08:48
поделиться

То же, что и , эта проблема?

Есть предложение:

Выберите цель развертывания «iPhone OS 3.0» или более раннюю. Это известная проблема компоновщика Xcode с целевыми объектами развертывания «iPhone OS 3.1» и более поздних версий.

1
ответ дан 14 December 2019 в 08:48
поделиться

Поскольку я использую проект XCode, созданный CMake, у меня нет той гибкости, которую я хотел бы при изменении порядка строк ссылок. Некоторое время я смотрел на страницу руководства ld (1) и обнаружил следующее:

-no_order_inits

"Когда параметр -order_file не используется , компоновщик размещает функции в {{1} } порядок файлов объектов и перемещает все подпрограммы инициализатора в начало раздела __text и функции терминатора в конец. Используйте эту опцию , чтобы отключить автоматическая перестановка инициализаторов и терминаторов. "

Добавление этого в строку ссылки заставило ошибку исчезнуть.

0
ответ дан 14 December 2019 в 08:48
поделиться

Я смог избавиться от ошибки, убрав опцию компилятора "Compile For Thumb".

Вот мои настройки:

Base SDK:  iPhone Device 4.0 
iPhone OS Deployment Target: 3.1.3

Я добавил -no_order_inits в опции компоновщика, но это не сработало для меня.

Если вы выберете цель развертывания 3.0, то вы также не получите ошибку.

BTW, я также использую библиотеки FFMPEG и libMMS.

2
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: