2011-12-14 12 views
5

Sadece GCC 4.6/4.7 arasında MacPorts' yapı geçti, GCC 4.6 veya GCC 4.7 desteklemez. Ancak, kodumu "Evrensel" mimaride oluşturmak için bir sorunum vardı.Macports'un GCC'sini kullanarak evrensel kod derleyebilir miyim? Apple yana

Geleneksel olarak, en azından i386/x86_64 mimarisi için benim ikili derlemek g++ -arch i386 -arch x86_64 ... yapardım. Bazı arama yaptım ve fark ettim ki -arch seçeneği sadece Apple'ın derleyicileri tarafından destekleniyor. Tabii ki Macports ile çalışmadı '. Yapabileceğim en iyi şey, istediğim bir mimariyi belirtmek için -m32/-m64 seçeneklerini kullanmaktır. Bununla birlikte, bu yalnızca i386 veya x86_64 biçiminde bir ikili ad üretecektir. Gerçekten istediğim, orijinal GCC derleyicileriyle yapıldığı gibi her iki mimaride de (Universal) bir ikili dosya elde etmektir.

bu destekli veya bilinen bir sorun değil mi? Bütün geceyi Google'da cevap aramak için denedim, ancak yararlı bir şey bulamadım. Bu yüzden sadece bu problemin tek ben olduğumu ve işe yaraması için gerçekten önemli bir şeyi özlediğime şüphe ile başlıyorum. Birisi bana bazı önerilerde bulunabilirse gerçekten takdir ediyorum.

BTW. gcc46 +universal varyantlarını yükledim, ancak her mimari için ayrı ikili dosyaları derleme dışında gerçekten evrensel bir şey üretmedi.

Xing.

cevap

3

Sen evrensel tek lipo kullanarak farklı mimarileri ile ikilileri birleştirebilirsiniz.

+0

teşekkür ederiz. Lipo olduğunu bilmiyordum, sanırım tek ihtiyacım olan şey lipo. Benim Makefiles bazı kemer bayrakları durdurmak ve şimdi evrensel kod üretmek için lipo kullanmak için değiştirmek gerekiyor :) –

6

Oh, sadece bu sorunu vardı ve üzerinde zamanın oldukça geniş miktarda geçirdi. GCC 4.2.1'in elma versiyonunun gerçekten sadece birkaç bayrak (özellikle de -arch bayrağı) veren bir sarmalayıcı olduğu ve daha sonra nesne dosyalarını tekrar bir yağlı nesneye yapıştırmak için lipo kullandığı ortaya çıkıyor. Bu sürücüyü biraz değiştirdim, böylece GCC macunu GCC'yi sararak ve çok kemer nesnesini üretirken (32 bit ve 64 bit intel için).

Sadece bu nasıl yapılacağı konusunda oldukça geniş bir yazma asılmak: çalışır

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

İlgili konular