我如何编译iOS和MacOS的libffi?

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

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

更新:由于问题仍然没有得到解答,我决定在官方存储库中打开一个问题 。

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

不再需要gentramp.sh脚本,而且当前的上游xcodeproj不是最新的编译设置,也不是iOS上的64位源文件。 修补叉可以在https://github.com/ksjogo/libffifind

如果您检查存储库,您将看到在此提交中删除了您需要的文件。 你可以在这里find这个文件的最后一个版本。

请确保你正在遵循TBD或git项目上发布的安装libffi指令: https : //github.com/libffi/libffi

这里的一些主要亮点:

首先,您必须configuration您的特定系统的分配。 转到您想要构buildlibffi的目录并运行libffi源码分发根目录下的“configure”程序。

如果您直接从版本控制构buildlibffi,configuration将不存在; 先运行./autogen.sh

您可能想要告诉configuration在哪里安装libffi库和头文件。 要做到这一点,请使用--prefix configure开关。 Libffi将默认安装在/usr/local下。

如果要启用额外的运行时debugging检查,请使用--enable-debug configure开关。 当你的程序在使用libffi的时候神秘地死去的时候这很有用。

另一个有用的configuration开关是--enable-purify-safety 。 使用这个将会添加一些额外的代码,当你使用libffi使用Purify的时候,这些代码会抑制某些警告。 使用Purify时只能使用这个开关,因为它会减慢库的速度

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

configuration有许多其他选项。 使用“ configure --help ”来查看全部。

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

为了确保libffi能够像广告一样工作,请input“ make check ”。 这将需要你安装了DejaGNU

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

或者,尝试将下列git项目之一合并到您的项目中,以包含缺失的文件。 请确保文件在合并之前不会过时。

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

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

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