2023年3月29日 星期三

【Xcode】查詢 framework 或 dylib 是否為 universal 架構

由於 macOS 的 CPU 正處於 Intel Architecture 跟 ARM Architecture 的交會時代,導致許多 macOS 的開發人員忙於 x86_64 和 arm64 間轉換,所幸 Apple 提供了 universal 的編譯架構,讓 framework、app、dylib 等,能夠兼容兩種不同架構 CPU 的 macOS。那麼查看檔案是否為 universal 架構就變成一個重要的事情了。

 

查詢方法

查詢方法有兩種,都是在 CLI (command line interface)下執行,分別是指令 lipo 跟指令 file。

 

lipo

透過底下指令可查詢檔案的架構:

lipo -archs [Filename]
底下是查詢 dylib 的範例:
[/Applications/Datacolor/SpyderXElite/SpyderXElite.app/Contents/Frameworks]$ lipo -archs CDisplay.dylib
x86_64 arm64

顯示 x86_64 arm64 即代表為 universal,此外,x86_64 為 Intel 架構,arm64 則為 ARM 架構。下面為查詢 framework 的範例:

[/Applications/Datacolor/SpyderXElite/SpyderXElite.app/Contents/Frameworks]$ lipo -archs XojoFramework.framework/XojoFramework
x86_64 arm64

顯示結果為 x86_64 arm64,為 universal。需注意的是 framework 查詢的目標檔案是位於 framework 內的同名不帶副檔名的檔案(或 reference)。

 

file

透過底下指令可查詢檔案的架構:

  file [Filename]
底下是透過 file 查詢 dylib 的範例:
[/Applications/Datacolor/SpyderXElite/SpyderXElite.app/Contents/Frameworks]$ file CDisplay.dylib
CDisplay.dylib: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64:Mach-O 64-bit dynamically linked shared library arm64]
CDisplay.dylib (for architecture x86_64):	Mach-O 64-bit dynamically linked shared library x86_64
CDisplay.dylib (for architecture arm64):	Mach-O 64-bit dynamically linked shared library arm64

結果顯示將各種架構都顯示一遍,並同時顯示函式庫的類型,像是動態函式庫或是靜態函式庫,這邊顯示為 dynamic libray,動態函式庫。底下為透過 file 去查詢 framework 的範例:

[/Applications/Datacolor/SpyderXElite/SpyderXElite.app/Contents/Frameworks]$ file XojoFramework.framework/XojoFramework
XojoFramework.framework/XojoFramework: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64]
XojoFramework.framework/XojoFramework (for architecture x86_64):	Mach-O 64-bit dynamically linked shared library x86_64
XojoFramework.framework/XojoFramework (for architecture arm64):	Mach-O 64-bit dynamically linked shared library arm64

顯示結果為 universal並且為 dynamic library。

 

沒有留言:

張貼留言

熱門文章