Io不能在Mac OS X Snow Leopard上编译

时间:2010-10-08 03:43:23

标签: 64-bit io cmake compilation libffi

我按照自述文件中的说明操作,非常简单

cd build
cmake ..
make install

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)

我该如何解决这个问题?有没有办法通过传递参数make,cmake或编辑某些文件来编译32位的Io? Makefile有一个CFFI插件的条目。我可以删除它吗?我在哪里可以获得64位libcffi?这个库提供了一个API来访问更高级语言的低级函数调用,所以i + m不太确定用64位替换我的32位,它可能会破坏我的MacRuby或其他东西。我希望能够使用CFFI和可能在我的系统中工作的所有可能插件来构建它,以便能够做更多的事情:我对objective-c绑定感兴趣,我猜可能需要cffi。< / p>

1 个答案:

答案 0 :(得分:1)

在Mac上,只能通过在CMake缓存中设置CMAKE_OSX_ARCHITECTURES = i386来编译为32位。

运行“cmake-gui”。在构建树中,然后将CMAKE_OSX_ARCHITECTURES更改为i386。然后做一个干净的构建。此时你最终应该得到32位二进制文​​件。

在其他操作系统(Linux,Windows)上,有不同的技术可以在64位系统上获得32位版本。它们涉及将某些标志传递给编译器(-m32 -m64用于gcc)或使用正确的CMake生成器(Visual Studio 9 2008与Visual Studio 9 2008 Win64)。