【问题标题】:Io does not compile on Mac OS X Snow LeopardIo 无法在 Mac OS X Snow Leopard 上编译
【发布时间】:2010-10-08 03:43:23
【问题描述】:

我按照 README 中的说明进行操作,非常简单

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。

【问题讨论】:

    标签: 64-bit io cmake compilation libffi


    【解决方案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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2010-12-12
      • 2010-11-24
      • 1970-01-01
      相关资源
      最近更新 更多