项目简介
本项目是基于C语言开发的libffi库,它提供可移植的高级编程接口,支持各种调用约定。在编译时无法确定函数参数的程序(如解释器程序)里,libffi能作为桥梁,实现从解释器程序到编译代码的调用。同时,它也是实现完整的外部函数接口(FFI)中依赖于机器的底层部分,为不同语言间的函数调用提供支持。
项目的主要特性和功能
- 跨平台支持:支持众多不同的架构和操作系统组合,如AArch64(ARM64)在iOS、Linux、Windows上,以及多种其他架构在不同操作系统上的使用。
- 运行时函数调用:允许程序员在运行时根据调用接口描述调用任何函数。
- 新功能添加:3.3版本增加了RISC - V支持、新的支持GO闭包的API,以及IEEE754 binary128 long double支持等。
- 调用约定支持:支持多种调用约定,如PASCAL和REGISTER调用约定(在x86 Windows/Linux上)等。
安装使用步骤
配置项目
- 进入要构建libffi的目录,运行libffi源发行版根目录中的“configure”程序。构建libffi需要一个C99兼容的编译器。
- 若直接从git托管源构建libffi,“configure”程序可能还不存在,需先运行
./autogen.sh
,这需要安装autoconf、automake和libtool。 - 可使用
--prefix
配置开关指定libffi库和头文件的安装位置,默认安装在/usr/local
。 - 若要启用额外的运行时调试检查,使用
--enable-debug
配置开关。 - 使用
--enable-purify-safety
配置开关可在使用Purify时添加额外代码以抑制某些警告,但会使库变慢。 - 若不想构建文档,使用
--disable-docs
配置开关。 - 在Windows平台上使用Microsoft的Visual C++编译器构建时,在配置期间使用
msvcc.sh
包装脚本。对于64位Windows构建,需相应设置CC
和CXX
。 - 在Windows平台上使用LLVM项目的clang - cl编译器构建时,按示例配置相关参数。
- 在MingW环境下使用MSVC构建时,可能需要删除
configure
中设置fix_srcfile_path
为cygpath
命令的行。 - SPARC Solaris构建需要使用GNU汇编器和链接器,在配置前设置
AS
和LD
环境变量。 - 对于iOS构建,可使用
libffi.xcodeproj
Xcode项目。
编译与安装
- 配置完成后,输入
make
进行编译,必须使用GNU make,可从ftp.gnu.org:/pub/gnu/make
下载。 - 输入
make check
确保libffi按预期工作,这需要安装DejaGNU。 - 输入
make install
安装库和头文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】