2009-07-19 28 views
5

Tôi muốn biết cách bạn có thể hỗ trợ kiến ​​trúc i386 và ppc cho các chương trình tại/bin.Các chương trình hỗ trợ i386 và ppc cùng một lúc như thế nào?

tôi chạy ví dụ

bin $ file amber 

tôi nhận được

amber: setgid Mach-O universal binary with 2 architectures 
amber (for architecture i386): Mach-O executable i386 
amber (for architecture ppc): Mach-O executable ppc 

Làm thế nào để chương trình hỗ trợ i386 và ppc trong mã nguồn?

Nói cách khác, bạn có thể xóa thành phần nào, ví dụ, trong/bin/amber nếu bạn xóa hỗ trợ kiến ​​trúc ppc?

+0

Cảm ơn câu trả lời của bạn! –

Trả lời

10

Nó được gọi là Universal binary. Tóm lại, tệp thực thi có chứa cả hai loại mã thực thi. Apple có một số published document mô tả cách các nhà phát triển nên xây dựng các ứng dụng của họ để chạy trên một trong hai nền tảng.

Tệp thực thi lipo có thể được sử dụng để xóa phiên bản thực thi khỏi tệp. Nếu bạn muốn tệp thi hành của mình chỉ chứa một phiên bản, bạn có thể sử dụng lipo để đạt được điều này.

Lưu ý rằng có nhiều hơn chỉ ppci386, mặc dù đây là những kiến ​​trúc "an toàn nhất" để chọn cho Universal nhị phân. Đọc manpage cho arch; ở đó bạn có thể thấy rằng nhị phân OSX hiện đại có thể chứa bất kỳ số nào của ppc, ppc64, i386 hoặc x86_64. Có nhiều hơn nữa được liệt kê, nhưng chúng tồn tại ở đó cho đầy đủ.

5

Nó được gọi là fat binary.

Có bản sao mã gốc cho cả hai kiến ​​trúc trong tệp nhị phân. Định dạng nhị phân và hệ điều hành phải hỗ trợ nó, vì vậy nó có thể biết nơi để tìm trong tệp cho đúng mã.

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