2012-07-03 8 views
5

W Xcode 4.3.2, tworzenie aplikacji na iPada, która obejmuje libavutil.a z podziału ffmpeg, buduje i działa poprawnie, ale gdy próbuję uruchomić testy jednostkowe (Cmd-U) pojawia się następujący błąd łącznik:Błąd łącznika podczas testowania urządzenia: ld: nielegalne przeniesienie tekstu do pliku cstring w ... z _av_image_check_size w .../libavutil.a (imgutils.o)

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)

jest na urządzeniu (nie możemy uruchomić go w symulator obecnie, ponieważ nie mamy plików binarnych dla wszystkich bibliotek, które dołączamy).

Dlaczego jest prawidłowo zbudowany i działa normalnie, ale nie łączy się podczas przeprowadzania testów jednostkowych?

+0

Wygląda na to, że odpowiedź na to pytanie jest taka sama jak odpowiedź na to pytanie: [link] http://stackoverflow.com/questions/6650178/index-text-reloc-to-non-lazy-ptr-error- while-building-in-xcode-4-with-libav-l – user1499742

Odpowiedz

8

Odpowiedź, od here.

jest dodanie:

-read_only_relocs suppress 

do flag łącznikowych.

Drugi link wyjaśnia, dlaczego. Rozwiązanie pierwotnie znaleziono here.

+0

Pracowałem dla mnie. Dzięki – bandejapaisa

+3

To już nie działa. Ta flaga nie jest obsługiwana na architekturze x86_64 i jest również niekompatybilna z BYTECODE = YES. – dgatwood

2

Wystarczy być specyficzna linia, która specyficznie pracował, aby naprawić błąd podobny łączenie z ffmpeg dla 32bit OSX łącze za xcode/c++11, było dodanie -Wl,-read_only_relocs,suppress do linii łącza. Wariacje tego nie działały.

+0

Z flagą, lib może zostać skompilowany pomyślnie, ale ulegnie awarii na 32-bitowym urządzeniu podczas korzystania z biblioteki lib: '' 'dyld: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB ma segment 0, który nie jest segmentem zapisywalnym (__TEXT) w/private/var/containers/Pakiet/Aplikacja/25DBDD6A-F5C1-4DD3-B432-F9FAB43A3673/UPLiveSDKDemo.app/Frameworks/SomeLibDll.framework/SomeLibDll '' – rotoava

3

Rozwiązałem ten błąd łącznika, włączając kod niezależny od pozycji w kompilatorze i ustawienia linkera w XCode.

Powiązane problemy