我正在尝试在我的一个项目中使用libffi,但我似乎无法为 iOS(或 macOS,就此而言)进行编译。这是我在为 iOS 模拟器构建时遇到的各种错误之一:
bash: src/arm/gentramp.sh: No such file or directory
更新 1:由于问题仍未得到解答,我决定在官方存储库中也打开一个问题。
更新2:问题已得到解答,问题已关闭!
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
配置开关。Libffi 会/usr/local
默认安装在下面。
如果要启用额外的运行时调试检查,请使用
--enable-debug
配置开关。当您的程序在使用 libffi 时神秘死机时,这很有用。
另一个有用的配置开关是--enable-purify-safety
. 使用它会添加一些额外的代码,当您将 Purify 与 libffi 一起使用时,这些代码将抑制某些警告。仅在使用 Purify 时使用此开关,因为它会减慢库的速度。
对于 iOS 构建,“ libffi.xcodeproj
” Xcode 项目可用。
配置有许多其他选项。使用“ configure --help
”查看所有内容。
配置完成后,键入“ make
”。请注意,您必须使用 GNU make。 你可以 ftp GNU make from ftp.gnu.org:/pub/gnu/make
.
要确保 libffi 像宣传的那样工作,请键入“ make check
”。这将要求您已DejaGNU
安装。
要安装库和头文件,请键入“ make install
”。
或者,尝试将以下 git 项目之一合并到您的项目中,以包含丢失的文件。合并前请确保文件没有过期。
1 https://github.com/pandamonia/libffi-iOS