我如何编译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