项目简介
本项目基于C语言开发了libffi库。libffi是一个提供可移植、高级编程接口以支持各种调用约定的库。外函数接口(FFI)允许一种语言编写的代码调用另一种语言编写的代码,而libffi提供了实现外函数接口所需的底层、依赖于机器的功能。该库能为那些在编译时无法确定函数参数的程序(如解释器)搭建与编译代码之间的桥梁。
项目的主要特性和功能
- 跨平台支持:已被移植到众多不同平台,涵盖多种架构(如AArch64、Alpha、ARM等)、操作系统(如iOS、Linux、Windows等)和编译器(如GCC、Clang、IBM XL C等)。
- 调用约定支持:提供对各种调用约定的支持,允许程序员在运行时调用由调用接口描述指定的任何函数。
- 类型支持:支持多种数据类型,包括在特定平台上支持C99复数类型。
- 测试代码完善:包含一系列测试代码,用于验证结构体传递、复杂类型返回、变长参数列表等功能的正确性。
安装使用步骤
配置项目
- 进入要构建libffi的目录,运行libffi源代码分发根目录中的
configure
程序。若直接从版本控制构建libffi,需先运行./autogen.sh
。 - 可使用
--prefix
配置开关指定libffi库和头文件的安装位置,默认安装在/usr/local
。 - 若要启用额外的运行时调试检查,可使用
--enable-debug
配置开关;若使用Purify,可使用--enable-purify-safety
配置开关,但会降低库的运行速度。 - 在Windows平台上,若使用Microsoft的Visual C++编译器,配置时使用
msvcc.sh
包装脚本;若使用LLVM项目的clang - cl编译器,也有相应的配置方式。在MingW环境下使用MSVC构建时,可能需要移除configure
中设置fix_srcfile_path
为cygpath
命令的行。对于iOS构建,可使用libffi.xcodeproj
Xcode项目。 - 可使用
configure --help
查看所有配置选项。
编译和测试
- 配置完成后,使用GNU make进行编译,可从
ftp.gnu.org:/pub/gnu/make
下载GNU make。 - 运行
make check
确保libffi按预期工作,此步骤需要安装DejaGNU。
安装
运行make install
安装库和头文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】