2010-10-08 107 views
1

編譯我跟着自述文件的說明,他們是非常簡單的make install命令後,會出現木衛一無法在Mac OS X雪豹

cd build 
cmake .. 
make install 

的問題。 Io不會編譯,特別是因爲CFFI模塊。 LD抱怨說我的libffi.dylib是不是64位的,因此它不會鏈接.o文件,正因爲如此,它則抱怨說,這個或那個符號沒有定義,等

ld: warning: in /opt/local/lib/libffi.dylib, file was built for i386 which is not the architecture being linked (x86_64) 

我該如何解決這個問題?有沒有辦法在32位編譯Io,通過傳遞參數來製作,製作或編輯某個文件? Makefile有一個CFFI插件的條目。我可以刪除它嗎?我在哪裏可以得到一個64位的libcffi?這個庫提供了一個API來訪問更高級別的語言的底層函數調用,所以我不太確定用64位的替換我的32位,它可能會破壞我的MacRuby或其他東西。我希望能夠用CFFI和所有可能在我的系統中工作的插件來構建它,以便能夠做更多的事情:我對Objective-C綁定感興趣,我想這可能需要cffi。

回答

1

在Mac上,只能通過在CMake緩存中設置CMAKE_OSX_ARCHITECTURES = i386來將其編譯爲32位。

運行「cmake-gui」。在構建樹中,然後將CMAKE_OSX_ARCHITECTURES更改爲i386。然後做一個乾淨的構建。你應該在這一點上得到32位的二進制文件。

在其他操作系統(Linux,Windows)上,有不同的技術可以在64位系統上獲得32位版本。它們涉及將某些標誌傳遞給編譯器(-m32 -m64 for gcc)或使用適當的CMake生成器(Visual Studio 9 2008 vs. Visual Studio 9 2008 Win64)。