1

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

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 来访问高级语言的低级函数调用,所以我不太确定用 64 位替换我的 32 位,它可能会破坏我的 MacRuby 或其他东西。我希望能够使用 CFFI 和所有可能在我的系统中工作的插件来构建它,以便能够做更多的事情:我对 Objective-c 绑定感兴趣,我想这可能需要 cffi。

4

1 回答 1

1

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

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

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

于 2011-02-23T04:07:57.127 回答