2011-12-14 34 views
5

Vì Apple không hỗ trợ GCC 4.6 hoặc GCC 4.7, tôi vừa chuyển sang bản dựng GCC 4.6/4.7 của MacPorts. Tuy nhiên, tôi đã gặp sự cố khi xây dựng mã của mình trong kiến ​​trúc "Phổ".Tôi có thể biên dịch mã phổ dụng bằng cách sử dụng GCC của Macports không?

Theo truyền thống, tôi muốn làm g++ -arch i386 -arch x86_64 ... để biên dịch mã nhị phân của tôi cho kiến ​​trúc ít nhất là i386/x86_64. Tôi đã thực hiện một số tìm kiếm, và nhận ra rằng tùy chọn -arch chỉ được hỗ trợ bởi trình biên dịch của apple. Vì vậy, tất nhiên nó không hoạt động với Macports '. Điều tốt nhất tôi có thể làm là sử dụng các tùy chọn -m32/-m64 để chỉ định kiến ​​trúc tôi muốn. Tuy nhiên, điều này sẽ chỉ tạo ra một eitherr nhị phân ở định dạng i386 hoặc x86_64. Những gì tôi thực sự muốn là có được một tập tin nhị phân trong cả hai kiến ​​trúc (Universal) cũng giống như được thực hiện với các trình biên dịch GCC gốc.

Điều này có được hỗ trợ hoặc sự cố đã biết không? Tôi đã thử cả đêm tìm kiếm câu trả lời trên Google, nhưng tôi chưa nhận được gì hữu ích. Vì vậy, tôi chỉ bắt đầu nghi ngờ nếu tôi là người duy nhất có vấn đề này và tôi đã bỏ lỡ một cái gì đó thực sự quan trọng để làm cho nó hoạt động? Thực sự đánh giá cao nếu có ai có thể cho tôi một số gợi ý.

BTW. Tôi đã cài đặt gcc46 +universal biến thể, nhưng nó không tạo ra bất kỳ thứ gì thực sự phổ biến ngoại trừ việc biên dịch các tệp nhị phân riêng biệt cho mỗi kiến ​​trúc.

Xing.

Trả lời

3

Bạn có thể kết hợp các tệp nhị phân với các kiến ​​trúc khác nhau vào một phổ dụng bằng cách sử dụng lipo.

+0

Nhờ đó hoạt động. Tôi không biết có lipo, tôi đoán tất cả những gì tôi thực sự cần là lipo. Tôi cần phải thay đổi một số Makefiles của tôi để ngăn chặn các lá cờ vòm và sử dụng lipo để tạo mã phổ quát bây giờ :) –

6

Ồ, tôi vừa gặp sự cố này và dành một lượng thời gian khá dài trên đó. Nó chỉ ra rằng phiên bản táo của GCC 4.2.1 thực sự chỉ là một wrapper mà tôn vinh một vài lá cờ (đặc biệt là lá cờ -arch) và sau đó sử dụng lipo để dính các tập tin đối tượng lại với nhau thành một đối tượng chất béo. Tôi sửa đổi trình điều khiển này một chút để nó sẽ bọc macports GCC trong khi vẫn tôn vinh lá cờ -arch và sản xuất nhiều tập tin đối tượng vòm (cho 32 bit và 64 bit intel anyway).

tôi chỉ gửi một ghi khá rộng lên trên như thế nào để làm điều này:

http://thecoderslife.blogspot.com/2015/07/building-with-gcc-46-and-xcode-4.html

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