2012-09-23 19 views
31

Tôi là nhà phát triển thư viện của bên thứ ba và tôi muốn biên dịch lại thư viện của mình cho armv7, nhưng dường như tôi gặp sự cố.Biên dịch thư viện cho armv7s - cputype (12) và cpusubtype (11)

Tôi đã cập nhật xcode thành 4.5. Tôi đã cập nhật dự án và các mục tiêu liên quan để có kiến ​​trúc hợp lệ của armv7 armv7s.

Tuy nhiên, khi tôi chạy file hoặc lipo -info, nó sẽ liệt kê

  • i386
  • ARMv7
  • (cputype (12) cpusubtype (11))

Không armv7s. Tui bỏ lỡ điều gì vậy?

+2

đoán tốt nhất của tôi là lipo không biết về armv7s. Có lẽ đường dẫn/đến/xcode/Nhà phát triển/Nền tảng/iPhoneOS.platform/Nhà phát triển/usr/bin/lipo sẽ hoạt động tốt hơn? –

Trả lời

62

Sử dụng XCode của lipo:

xcrun -sdk iphoneos lipo 
+1

Có vẻ như nó phải là: xcrun -sdk iphoneos lipo -info myLibrary.a –

+0

Cảm ơn! Điều này đã làm cho các trick cho tôi. Các lipo "bình thường" xác định armv7s như (cputype (12) cpusubtype (11)). Vì vậy, nếu bạn cố gắng chạy lipo đó với "armin7-armin" thì sẽ có lỗi. – runamok

1

lipo không có định nghĩa cho armv7 và đó là lý do tại sao bạn không thể thấy tên nhưng chỉ có loại CPU và loại phụ. Vì vậy, nhị phân chất béo này là ok, chỉ có thể chúng ta phải chờ cho đến khi táo cập nhật các công cụ của nó nếu chúng ta muốn gây rối với kiến ​​trúc mới theo cách thủ công (ví dụ như bây giờ không có cách nào để kết hợp nhị phân nhị phân armv7s thành nhị phân chất béo).

17

Rõ ràng, (cputype (12) cpusubtype (11)) là một danh pháp khác cho armv7.

Bạn có thể tham khảo thêm ở đây: http://www.galloway.me.uk/2012/09/hacking-up-an-armv7s-library/

Blog trên cũng mô tả một phương pháp để làm cho một số thư viện armv7s xây dựng tương thích. Các mô tả ở trên là gần cuối của bài viết, nơi ông giải thích về đầu ra từ file lệnh.

Để trích dẫn một phần của nó:

Bên trong tiêu đề này (gọi là tiêu đề Mach-O) là một lĩnh vực cho các loại CPU và subtype CPU. ARM là CPU loại 12, ARMv7 là CPU kiểu phụ 9 và armv7s là CPU kiểu phụ 11.

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