2016-02-18 23 views
8

Chúng tôi đã có một dự án lớn có nhiều ứng dụng, Vì vậy, chúng tôi đã chuyển mã chung thành một khung động. Cho đến nay chạy tốt trên các thiết bị 64 bit, nhưng có một vụ tai nạn trên các thiết bị 32 bit như sau:Xcode 7.2 Dynamic Framework Lỗi thiết bị 32 bit

dyld: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB has segment 0 which is not a writable segment (__TEXT) in 
/path/to/MyApp.app/Frameworks/MyFramework.framework/MyFramework 

Một nền chút: Chúng tôi đã ffmpeg và vài libs chất béo khác được biên soạn với ARM64, ARMv7x86_64 kiến ​​trúc sau đó được thêm vào khung. Chúng tôi đã có một số lỗi di chuyển văn bản đã được giải quyết bằng cách thêm -read_only_relocs suppress vào cờ liên kết.

Nếu chúng tôi đưa ra các thư viện ffmpeg và liên quan, nó hoạt động tốt trên các thiết bị 32 bit.

Có ai gặp lỗi như vậy không? Bất kỳ con trỏ hoặc trợ giúp nào cũng sẽ được đánh giá cao.

Trả lời

0

Chúng tôi đã gặp vấn đề tương tự khi sử dụng "Thư viện động" cho Loại Mach-O bên trong khuôn khổ của bạn. Chuyển sang "Tệp đối tượng có thể định vị lại" đã khắc phục sự cố. Vấn đề có vẻ là với việc di chuyển văn bản bên trong các thư viện.

Như được mô tả chi tiết hơn here: "Di chuyển văn bản là kết quả của tham chiếu đến đối tượng có địa chỉ biến trong thời gian chạy bằng chế độ địa chỉ tuyệt đối. nhị phân phải được thay đổi để chứa địa chỉ chính xác khi lấy địa chỉ tải thực tế khi chạy vào tài khoản. "

sử dụng FFMPEG di dời văn bản và nó đã được một vấn đề lớn trên Android M (https://trac.ffmpeg.org/ticket/4928)

Vì họ không được sẽ được cố định bất cứ lúc nào sớm, "định vị Object File" có vẻ là lựa chọn duy nhất.

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