2009-08-19 28 views
5

Câu hỏi ngắn: Làm thế nào để bạn có hai ứng dụng, một cho intel và ppc khác, và gói chúng thành một Universal nhị phân?Tạo "Universal Binary" từ hai ứng dụng?

suy nghĩ hiện tại của tôi về vấn đề này:

Tôi đã đọc mặc dù các tài liệu phát triển táo trên mã nhị phân phổ thông và đã không thể tìm được một câu trả lời như vậy nó có thể không thực hiện được.

Vì lý do tôi không truy cập ở đây, tôi có hai ứng dụng trong chương trình của mình (được sử dụng xtools để biên dịch nhị phân một lần), một cho Intel Mac và một cho Mac> = 10.3.9 chạy trên PPC. Tài nguyên chia sẻ không phải là vấn đề.

Tôi có thể đặt cả MyProg_intel.app và MyProg_ppc.app vào một zip và phân phối theo cách đó; nhưng điều đó có thể dẫn đến sự nhầm lẫn cho nhiều người mà tôi sẽ phân phối chương trình của mình.

Trả lời

1

Để tạo Universal Binary, bạn phải sử dụng Xcode và chọn cả kiến ​​trúc đích của Intel và PPC. Theo tôi biết, bạn không thể chỉ nhồi nhét hai tập tin nhị phân khác nhau vào một .app ex post facto.

3

Kiểm tra trang người đàn ông dành cho lipo. Tôi tin rằng bạn có thể sử dụng -tạo để lấy nhiều tệp đầu vào và tạo một tệp đầu ra duy nhất với nhiều kiến ​​trúc.

5

Xem công cụ lipo. Nó sẽ cho phép bạn ghép lại các tệp nhị phân PPC và i386 của bạn.

Ngoài ra, đôi khi có thể tránh các mục tiêu riêng biệt cho các kiến ​​trúc khác nhau bằng cách sử dụng conditional build settings trong Xcode. Điều này rất hữu ích nếu bạn cần liên kết với một thư viện nhị phân khác nhau cho mỗi kiến ​​trúc, ví dụ.

+0

lipo trông giống như nó có thể là giải pháp của tôi nhưng input_file đang mong đợi một tệp nhị phân hoặc một số loại tệp khác - không phải là .app (khi tôi thử nó nói _Không thể nhập tệp bản đồ ((os/kern) đối số không hợp lệ) _). Chương trình của tôi được xây dựng với python và phương pháp đóng gói của tôi không biên dịch mọi thứ thành một nhị phân, có một số lượng lớn các phụ thuộc. – marshallpenguin

+1

Bạn sử dụng lipo để kết hợp chỉ các tệp nhị phân: lipo myapp_ppc.app/Contents/MacOS/myapp -output myapp_i386.app/Contents/MacOS/myapp kết hợp phía PPC vào ứng dụng Intel, sau đó bạn có thể đổi tên thành ứng dụng Universal. Nhưng các áp phích khác chính xác hơn. Bạn nên tạo ứng dụng phổ quát ngay từ đầu sau khi xây dựng và liên kết từng kiến ​​trúc, thay vì thực hiện công việc xây dựng .app hai lần và ném đi một lần. – cdespinosa

+0

py2app tạo ra một nhị phân phổ quát rồi. Tại sao không xây dựng các phụ thuộc của bạn với "-arch i386 -arch ppc" trong CFLAGS, CXXFLAGS và LDFLAGS? –

1

Trang web dành cho nhà phát triển của Apple có một bài viết trên Building an Open Source Universal Binary giải thích cách sử dụng Xcode để 'gói' một tập lệnh Xây dựng nhị phân Universal sử dụng. Đây có lẽ là con đường tốt nhất để bạn tỉnh táo. Bạn có thể sử dụng lipo, nhưng về lâu dài nếu bạn định cập nhật và duy trì ứng dụng của mình, việc có dự án Xcode thực hiện phép thuật cho bạn sẽ tốn ít thời gian hơn.

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