2012-07-03 17 views
5

Trong Xcode 4.3.2, tạo ứng dụng iPad, bao gồm libavutil.a từ phân phối ffmpeg, nó được xây dựng và chạy một cách chính xác nhưng khi tôi cố gắng chạy thử nghiệm đơn vị (Cmd-U) tôi nhận được lỗi mối liên kết sau đây:Lỗi trình kết nối khi kiểm tra đơn vị: ld: di chuyển văn bản bất hợp pháp sang cstring trong ... từ _av_image_check_size trong .../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)

Đây là trên thiết bị (Chúng tôi không thể chạy nó trong trình mô phỏng hiện tại vì chúng tôi không có các tệp nhị phân chất béo cho tất cả các thư viện mà chúng tôi đang đưa vào).

Tại sao nó sẽ xây dựng và chạy bình thường một cách bình thường nhưng không liên kết khi chạy thử nghiệm đơn vị?

+0

Có vẻ như câu trả lời cho câu hỏi này giống với câu trả lời cho câu hỏi này: [link] http://stackoverflow.com/questions/6650178/illegal-text-reloc-to-non-lazy-ptr-error- while-building-in-xcode-4-with-libav-l – user1499742

Trả lời

8

Câu trả lời, từ here.

là thêm:

-read_only_relocs suppress 

đến cờ mối liên kết.

Liên kết khác giải thích lý do. Giải pháp ban đầu được tìm thấy here.

+0

Làm việc cho tôi. Cảm ơn – bandejapaisa

+3

Điều này không còn hoạt động. Cờ đó không được hỗ trợ trên x86_64 và cũng không tương thích với BYTECODE = YES. – dgatwood

2

Chỉ cần cụ thể, dòng cụ thể hoạt động để sửa lỗi liên kết tương tự với ffmpeg cho liên kết 32bit OSX sử dụng xcode/c++11, là thêm -Wl,-read_only_relocs,suppress vào dòng liên kết. Các biến thể này không hiệu quả.

+0

Với cờ, lib có thể được biên dịch thành công, nhưng sẽ bị lỗi trên thiết bị 32 bit khi sử dụng lib: '' 'dyld: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB có đoạn 0 không phải là phân đoạn có thể ghi (__TEXT) trong/private/var/containers/Gói/Ứng dụng/25DBDD6A-F5C1-4DD3-B432-F9FAB43A3673/UPLiveSDKDemo.app/Frameworks/SomeLibDll.framework/SomeLibDll '' – rotoava

3

Tôi đã giải quyết lỗi trình liên kết này bằng cách bật Mã độc lập vị trí trong trình biên dịch và cài đặt trình liên kết trong XCode.

Các vấn đề liên quan