2012-12-07 122 views
0

大家好:)我是一個新手開發Mac應用程序。我的問題涉及到Mac中的不同操作系統架構,我對此非常困惑。如果我的問題很便宜,請耐心等待。謝謝大家:)Mac建築問題

  1. 我知道有10.6(SnowLeopard)的32位支持。我想知道是否有32位支持10.7(獅子)?

  2. 我有一個64位的機器。我想要一個32位10.7。我會怎麼做?

  3. 我有一個32位的iMac,我有10.6.8在它。我已經建立了一個應用程序;該應用程序使用用戶開發的庫也是32位。現在我將這個應用程序繼續運行到另一臺具有10.7(Lion)64位處理器的Mac機器。我能夠在10.7(Lion)中執行相同的應用程序嗎?我無法這樣做。

回答

1
  1. OS X使用能夠支持多個體繫結構(例如,32位和64位Intel,以及的PowerPC等)在單個可執行程序或庫中的二進制格式。 Lion中的大多數二進制文件和庫都是雙64位英特爾架構的32位3232329,。所以,是的,Lion有32位支持。

  2. 有作爲32位獅子沒有這樣的東西;這是一個雙架構的操作系統。它可以在32位或64位模式下啓動內核,並以32位或64位模式運行程序。與大多數其他操作系統不同,它甚至可以在32位內核下以64位模式運行程序。無論何時在Lion中運行程序,它都會檢查程序包含哪些體系結構以及CPU的能力,並選擇運行該程序的「最佳」模式。

  3. 沒有明顯的原因,這不應該起作用。如果您嘗試使用64位模式下運行的程序中僅32位的庫或32位中運行的程序中僅64位的庫,則會失敗。但是,如果程序只有32位,那麼它顯然會以該模式運行,用戶開發的庫是32位的,並且隨OS提供的所有庫都是32 + 64位。

    有可能導致您的32位程序獅下失敗的幾件事情。首先,它依賴於除其他任何庫你提到的那些與操作系統提供的(如圖書館等類似的MacPorts,芬克,或自制本地編譯)?如果是這樣,那些庫可能只被編譯爲64位。 IMO庫應始終針對所有相關體系結構進行編譯以避免此類問題,但這不是默認設置。

    另一個可能的麻煩來源是如果你的程序不是一個真正的程序,而是加載到另一個程序(例如某種插件,屏幕保護程序等)的東西。在這種情況下,您的插件需要支持加載它的程序運行的任何模式。實際上,Java程序可能會遇到此問題,因爲Java運行時將以64位模式啓動(CPU支持時)在獅子。

    告訴我們更多關於你的程序和什麼具體錯誤你可能會幫助很多...

+0

我使用Python腳本,將訪問32位庫。我認爲即使我以32位模式加載OS X Lion,python解釋器也會加載它的64位庫,從而導致該問題。無論如何,我已經跳過了這個問題,並進一步移動。非常感謝你的評論,這真的很有用。 – Britto

+0

在這種情況下,您需要以32位模式運行python解釋器,類似'arch -arch i386 /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS的/ Python' –