【发布时间】:2015-08-22 12:43:52
【问题描述】:
我正在尝试在我的一个项目中使用libffi,但我似乎无法为 iOS(或 macOS,就此而言)进行编译。这是我在为 iOS 模拟器构建时遇到的各种错误之一:
bash: src/arm/gentramp.sh: No such file or directory
更新 1:由于问题仍未得到解答,我决定在官方存储库中也打开一个 issue。
更新 2:问题已得到解答,问题已关闭!
【问题讨论】:
我正在尝试在我的一个项目中使用libffi,但我似乎无法为 iOS(或 macOS,就此而言)进行编译。这是我在为 iOS 模拟器构建时遇到的各种错误之一:
bash: src/arm/gentramp.sh: No such file or directory
更新 1:由于问题仍未得到解答,我决定在官方存储库中也打开一个 issue。
更新 2:问题已得到解答,问题已关闭!
【问题讨论】:
如果您检查存储库,您将看到您需要的文件已在 this commit 中删除。你可以找到这个文件的最新版本here。
【讨论】:
generate-darwin-source-and-headers.py 和 libffi.xcodeproj 需要更新以包含所有当前相关的源文件。
不再需要 gentramp.sh 脚本,并且当前的上游 xcodeproj 在编译设置和包含在 iOS 上的 64 位源文件中都不是最新的。在https://github.com/ksjogo/libffi
可以找到打补丁的分叉【讨论】:
sh autogen.sh
python generate-darwin-source-and-headers.py --only-ios
打开libffi.xcodeproj
选择方案libffi-iOS和设备Generic iOS Device
点击“产品 - 构建”
如果成功,您会在侧边栏中看到“Product/libffi.a”,您可以右键单击它以在 finder 中获取 lib。
【讨论】:
请确保您遵循 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
【讨论】:
dejagnu 并按照您的所有说明进行操作;但是我仍然收到过多的神秘错误。 Xcode 仍然抱怨缺少gentramp.sh。