當我通過編譯器標誌-mmacosx-version-min=10.5
,這是什麼意思?我認爲這意味着結果二進制是x86,而不是ppc,但它是32位還是64位?我正在編譯雪豹,所以默認輸出二進制是64位。我想不是通過-universal
,它不是32位-64位通用二進制。macosx-version-min暗示什麼?
回答
該選項將被放置在標題中的各種可用性宏使用。這意味着即使您擁有更新的SDK(即使用10.6 SDK的目標10.5),也可以要求最低版本的操作系統。在10.5中使用10.6 API將觸發警告,API將與weak_import屬性鏈接。
大部分蘋果的API頭包含每個類,方法,函數或枚舉可用性宏,以宣佈爲他們每個人:
- 最低OS支持
- 棄用
- 將不可用
- ...
的宏看起來像:
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER_BUT_DEPRECATED
- ...
至於架構,它只能依賴於SDK的二進制文件的硬件架構。例如,對於10.5 SDK,您可以針對四種架構(Intel/32位,PowerPC/32位,Intel/64位,PowerPC 64位),而對於10.6 SDK,則只能針對三種架構(Intel/32位,PowerPC/32位,英特爾/ 64位)。
當您使用雪豹,您可以定位I386(英特爾/ 32位),PPC(PowerPC的/ 32位)或x86_64(英特爾/ 64位),非常簡單地通過傳遞架構選項是這樣的:
gcc -arch i386
或類似這樣(的配置爲基礎的項目):
CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure
它會觸發Mac OS X 10.5之後出現的方法的編譯器警告。與建築無關。
從我的測試中,它也是重要的,這個選項被傳遞給鏈接步驟(如-arch);所以它不僅影響宏/預處理(可能從其他答案推斷出來)。
當傳遞給編譯步驟但未傳遞給鏈接步驟時,我發現用10.6構建的共享庫不會在10.5下加載。
-mmacosx-version-min=...
也影響C++ STL實現(GNU或LLVM)的默認選擇,在這方面,它對編譯器和鏈接器同樣重要。
確實。這對於小牛來說尤爲重要,因爲在這裏默認的C++ STL庫發生了變化。 – 2013-12-16 11:18:24
- 1. 這個crossdomain.xml暗示了什麼?
- 2. 雙重暗示的目的是什麼?
- 3. SQL:NULL作爲ColumnName暗示什麼
- 4. SOAP_STOP暗示的錯誤是什麼?
- 5. * margin-top在css中暗示了什麼?
- 6. 這段代碼暗示了什麼:ss:dword_410CC5 [ebp]?
- 7. 爲什麼當顯示包含GLSurfaceView的DialogFragment時,屏幕變暗?
- 8. 爲什麼不鍵入暗示提高此功能的性能?
- 9. 當索引暗示時,爲什麼MongoDB $ geoWithin變慢?
- 10. 什麼是「暗示」的意思是在Socket編程
- 11. 什麼 - 我暗示這裏在g ++命令?
- 12. 爲什麼在JavaScript中沒有暗示這一點
- 13. 什麼是ZK,Hibernate,Spring的暗示,{oracle/mysql}
- 14. 接口暗示某種實現的好處是什麼?
- 15. C中一個結構體中的結構暗示了什麼?
- 16. 「flex:...」暗示「display:flex」?
- 17. jquery replaceWith暗示
- 18. ReadUncommitted暗示NoLock
- 19. @ElementCollection暗示orphanRemoval?
- 20. 「===」在JavaScript/Jquery中暗含的是什麼?
- 21. Haskell:爲什麼RealFrac不暗含分數?
- 22. 什麼參考灰暗任務
- 23. 的EditText暗示不顯示
- 24. 類型暗示python
- 25. 的Android TextInputLayout暗示重疊的EditText暗示
- 26. 爲什麼const暗示C++中的內部鏈接,當它不在C中?
- 27. 不相干的暗示:爲什麼agda沒有推斷出這個證明?
- 28. 在下列情況下使用關鍵字'this'有什麼用處暗示
- 29. 爲什麼PHP的類型暗示認爲我的類是一個字符串?
- 30. 爲什麼method_getNumberOfArguments會返回比選擇器暗示的更多兩個結果?
我不得不#include以獲得這些宏在普通C.但available.h也包含在stdlib.h –
2011-09-28 15:07:20
請參閱@克里斯蒂安的答案在下面。此外,我發現最低版本等於或高於10。8會生成稍微不同的符號('_start'符號的鏈接已更改,可能符合新的默認C++庫)。 – Ephemera 2014-05-17 06:07:28