Error while compiling the Xcode project (IPhone)

2020-07-11 09:35发布

I added ffmpeg iphone port into my library and I can able to use a few of its functions like avcodec_init(),.. without any errors. But when I include this function call "avcodec_register_all" Xcode is giving error after compilation

The error message is :

*--------------- ld: ldr 12-bit displacement out of range (4276 max +/-4096) in _CFRelease$stub in _CFRelease$stub from /Users/foxit/Documents/CameraTest/build/CameraTest.build/Debug-iphoneos/CameraTest.build/Objects-normal/armv6/CameraTest

Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1

*-------------

Does anyone know whats wrong with this ?

Regards,

Raghu

标签: iphone ffmpeg
6条回答
贼婆χ
2楼-- · 2020-07-11 10:15

I was able to get rid of the error by unselecting the "Compile For Thumb" compiler option.

So here are my settings:

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

I did add -no_order_inits to the linker options but that did not work for me.

If you select a deployment target of 3.0 then you also will not get the error.

BTW, I am also using the FFMPEG and libMMS libraries.

查看更多
爱情/是我丢掉的垃圾
3楼-- · 2020-07-11 10:18

Same as this problem?

Suggestion there is:

Please select deployment target "iPhone OS 3.0" or earlier. It is known Xcode linker issue with deployment targets "iPhone OS 3.1" and later.

查看更多
Luminary・发光体
4楼-- · 2020-07-11 10:30

This problem exists in iPhone OS 3.1 or later while building in Xcode. Try re-arringing the link order of the libraries in your target's link library phase. I have discussed this issue in: http://www.galloway.me.uk/2009/12/ldr-12-bit-displacement-out-of-range/

There is an inherent problem in iPhone SDK 3.1 and later. Will have to wait until Apple fixes it or we will have to do some trail and error changes.

In our case, just re-ordering libavfilter and libavcodec to the last would simply work.

查看更多
我只想做你的唯一
5楼-- · 2020-07-11 10:33

Since I am using a CMake generated XCode project I don't have all the flexibility I would like in re-ordering my link lines. I stared at the ld(1) man page for a while and found this:

-no_order_inits

"When the -order_file option is not used, the linker lays out functions in object file order and it moves all initializer routines to the start of the __text section and terminator routines to the end. Use this option to disable the automatic re-arrangement of initializers and terminators."

Adding this to the link line made the error go away.

查看更多
The star\"
6楼-- · 2020-07-11 10:36

For me on 4.2 and using ffmpeg, solution was to specify "Optimized (armv7)" in field "Architectures" instead "Standard (armv6 armv7)" if this can help you...

查看更多
看我几分像从前
7楼-- · 2020-07-11 10:39

I've had this problem in MonoTouch, and posted a solution for it here: http://microsoft2apple.com/2010/09/30/solved-ldr-12-bit-displacement-out-of-range/

查看更多
登录 后发表回答