项目简介
本项目是libffi库,它提供了一个可移植的高级编程接口,用于连接不同的调用约定。在高级语言编译器生成遵循特定约定的代码中,“调用约定”是重要的一部分,但有些程序在编译时可能不知道要传递给函数的参数,libffi可以在这类程序中作为从解释器程序到编译代码的桥梁,允许程序员在运行时调用由调用接口描述指定的任何函数。
项目的主要特性和功能
- 跨平台支持:已移植到众多不同的平台,包括但不限于AArch64、Alpha、ARM、MIPS等架构,以及iOS、Linux、Windows等操作系统,并且支持多种编译器如GCC、Clang等。
- 调用约定支持:提供了对各种调用约定的支持,允许程序在运行时调用指定接口的函数。
- 类型支持:支持C99 Complex Type等类型,还支持PASCAL、REGISTER、stdcall、thiscall、fastcall等多种调用约定。
- 调试与优化:可通过配置开关启用额外的运行时调试检查和抑制特定警告的功能。
安装使用步骤
配置
- 进入要构建libffi的目录,运行libffi源代码发行版根目录中的“configure”程序。若直接从版本控制构建,需先运行
./autogen.sh
。 - 可使用
--prefix
开关指定libffi库和头文件的安装位置,默认安装在/usr/local
。 - 若要启用额外的运行时调试检查,使用
--enable-debug
开关;若使用Purify,可使用--enable-purify-safety
开关,但会使库运行变慢。 - 在Windows平台使用Microsoft的Visual C++编译器构建时,配置时使用
msvcc.sh
包装脚本,如path/to/configure CC=path/to/msvcc.sh CXX=path/to/msvcc.sh LD=link CPP="cl -nologo -EP"
;64位Windows构建时,使用CC="path/to/msvcc.sh -m64"
和CXX="path/to/msvcc.sh -m64"
,可能还需适当指定--build
。 - 在Windows平台使用LLVM项目的clang - cl编译器构建时,配置如下:
path/to/configure CC="path/to/msvcc.sh -clang - cl" CXX="path/to/msvcc.sh -clang - cl" LD=link CPP="clang - cl -EP"
。 - 在MingW环境下使用MSVC构建时,可能需要移除
configure
中设置fix_srcfile_path
为cygpath
命令的行。 - 对于iOS构建,可使用
libffi.xcodeproj
Xcode项目。 - 可使用
configure --help
查看所有配置选项。
编译与测试
- 配置完成后,使用GNU make进行编译,可从
ftp.gnu.org:/pub/gnu/make
下载GNU make。 - 若要确保libffi按预期工作,可运行
make check
,这需要安装DejaGNU。
安装
运行make install
安装库和头文件。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】