【问题标题】:How do I compile libffi for iOS & macOS?如何为 iOS 和 macOS 编译 libffi?
【发布时间】:2015-08-22 12:43:52
【问题描述】:

我正在尝试在我的一个项目中使用libffi,但我似乎无法为 iOS(或 macOS,就此而言)进行编译。这是我在为 iOS 模拟器构建时遇到的各种错误之一:

bash: src/arm/gentramp.sh: No such file or directory

更新 1:由于问题仍未得到解答,我决定在官方存储库中也打开一个 issue

更新 2:问题已得到解答,问题已关闭!

【问题讨论】:

    标签: ios xcode libffi


    【解决方案1】:

    如果您检查存储库,您将看到您需要的文件已在 this commit 中删除。你可以找到这个文件的最新版本here

    【讨论】:

      【解决方案2】:

      generate-darwin-source-and-headers.py 和 libffi.xcodeproj 需要更新以包含所有当前相关的源文件。

      不再需要 gentramp.sh 脚本,并且当前的上游 xcodeproj 在编译设置和包含在 iOS 上的 64 位源文件中都不是最新的。在https://github.com/ksjogo/libffi

      可以找到打补丁的分叉

      【讨论】:

        【解决方案3】:
        1. sh autogen.sh

        2. python generate-darwin-source-and-headers.py --only-ios

        3. 打开libffi.xcodeproj

        4. 选择方案libffi-iOS和设备Generic iOS Device

        5. 点击“产品 - 构建”

          如果成功,您会在侧边栏中看到“Product/libffi.a”,您可以右键单击它以在 finder 中获取 lib。

        【讨论】:

          【解决方案4】:

          请确保您遵循 TBD 或 git 项目中发布的安装 libffi 说明:https://github.com/libffi/libffi

          这里有一些主要亮点:

          首先,您必须为您的特定配置配置分发 系统。 转到您希望构建 libffi 的目录并运行 在 libffi 源的根目录中找到“配置”程序 分布。

          如果你是直接从版本控制构建 libffi,configure 不会 还存在;先运行./autogen.sh

          你可能想告诉 configure 在哪里安装 libffi 库和 头文件。为此,请使用--prefix 配置开关。利比 默认安装在/usr/local下。

          如果要启用额外的运行时调试检查,请使用 --enable-debug 配置开关。 这在您的程序终止时很有用 在使用 libffi 时神秘地出现。

          另一个有用的配置开关是--enable-purify-safety。使用这个 将添加一些额外的代码,当你 正在使用带有 libffi 的 Purify。 使用时仅使用此开关 净化,因为它会减慢图书馆的速度

          对于 iOS 版本,“libffi.xcodeproj”Xcode 项目可用。

          配置有许多其他选项。使用“configure --help”查看所有内容。

          配置完成后,输入“make”。 请注意,您必须使用 GNU make。你可以从ftp.gnu.org:/pub/gnu/make ftp GNU make。

          要确保 libffi 像宣传的那样工作,请输入“make check”。 这将要求您安装 DejaGNU

          要安装库和头文件,请输入“make install”。

          或者,尝试将以下 git 项目之一合并到您的项目中,以包含丢失的文件。 合并前请确认文件没有过期。

          1 https://github.com/pandamonia/libffi-iOS

          2 https://github.com/influitive/libffi-iOS

          3 https://github.com/landonf/libffi-ios

          【讨论】:

          • 这不起作用。我通过 Homebrew 安装了dejagnu 并按照您的所有说明进行操作;但是我仍然收到过多的神秘错误。 Xcode 仍然抱怨缺少gentramp.sh
          • 试试看一下这个仓库,里面有所有的配置文件:github.com/pandamonia/libffi-iOS
          • 那个特殊的分叉已经过时了。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-11-24
          • 2014-07-06
          • 1970-01-01
          • 2012-01-29
          • 1970-01-01
          • 1970-01-01
          • 2022-06-29
          相关资源
          最近更新 更多