Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Linker error when unit testing: ld: illegal text-relocation to cstring in ... from _av_image_check_size in .../libavutil.a(imgutils.o)

In Xcode 4.3.2, building an iPad app, which includes libavutil.a from the ffmpeg distribution, it builds and runs correctly but when I try to run unit tests (Cmd-U) I get the following linker error:

ld: illegal text-relocation to cstring in /myPath/libavutil.a(imgutils.o) from _av_image_check_size in /myPath/libavutil.a(imgutils.o) for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

This is on the device (We can't run it in the simulator currently because we don't have fat binaries for all the libraries we are including).

Why will it build and run correctly normally but not link when running unit tests?

like image 785
user1499742 Avatar asked Jul 03 '12 19:07

user1499742


2 Answers

The answer, from here.

is to add:

-read_only_relocs suppress

to the linker flags.

The other link explains why. The solution was originally found here.

like image 84
user1499742 Avatar answered Oct 15 '22 19:10

user1499742


Just to be specific, the line that specifically worked to fix a similar linking error with ffmpeg for 32bit OSX link using xcode/c++11, was to add -Wl,-read_only_relocs,suppress to the link line. Variations of this didn't work.

like image 3
user2333947 Avatar answered Oct 15 '22 18:10

user2333947