gravatar

幫 Mac OS X 的 Universal Binaries 減肥

這是從 macosxhints - Strip x86 code from fat binaries 所翻譯的 summary。原因是 Universal Binaries(後簡稱 "fat")包含了 PPC & x86 兩種的機器碼在執行檔裡面(減輕從 PPC 到 x86 的 transition 痛苦),因此如果是 end-user 單單只有在其中一種架構上使用,那麼許多程式 fat 裡面額外用不到的機器碼就只是佔空間而已。如果把他去除掉,甚至可以把 fat 減肥 30%。其中一種用複製檔案的方法是

ditto --rsrc --arch ppc /Applications/Foo.app /Application/Foo-ppc.app
其中的 Foo.app 是原始程式,Foo-ppc.app 是要產生的程式檔名,而 --arch ppc 是指 PowerPC 架構,如果相反要在 x86 上把 PPC 機器碼去除,則是改成 --arch i386
另外一種方法是使用 Tiger 內建的 lipo 指令,作法是
lipo -thin ppc
lipo -remove i386
如此就可以直接保留 PPC 架構或是去除 i386 架構的部份。
兩個都是同樣的功能,唯一的差別是在,使用 ditto 可以在任何的版本 Mac OS X 上作,而 lipo 需要在支援 fat 的系統上(可能是 10.4 or 10.5)。

Tags: