core.base.binutils
二进制文件处理工具模块。
binutils.bin2c
从二进制文件生成 C/C++ 代码。
函数原型
API
lua
binutils.bin2c(binaryfile: <string>, outputfile: <string>, opt: <table>)参数说明
| 参数 | 描述 |
|---|---|
| binaryfile | 必需。输入二进制文件路径 |
| outputfile | 必需。输出 C/C++ 源文件路径 |
| opt | 可选。选项: - linewidth: 行宽 (默认: 32) - nozeroend: 不追加空终止符 (默认: false) |
binutils.bin2obj
从二进制文件生成对象文件。
函数原型
API
lua
binutils.bin2obj(binaryfile: <string>, outputfile: <string>, opt: <table>)参数说明
| 参数 | 描述 |
|---|---|
| binaryfile | 必需。输入二进制文件路径 |
| outputfile | 必需。输出对象文件路径 |
| opt | 可选。选项: - format: 对象格式 (coff, elf, macho) - symbol_prefix: 符号前缀 (默认: _binary_) - arch: 架构 (默认: x86_64) - plat: 平台 (默认: macosx, 仅限 macho) - basename: 符号基名 - target_minver: 目标最小版本 (仅限 macho) - xcode_sdkver: Xcode SDK 版本 (仅限 macho) - zeroend: 追加空终止符 (默认: false) |
NOTE
尽管自带规则util.bin2obj会自动探测目标的架构和平台,binutils.bin2obj需要调用者手动获取并传递架构(arch)和平台(plat)等参数。在绝大多数场景中,可使用target:arch()和target:plat()轻松获取这些参数。
符号名称
与util.bin2obj类似,binutils.bin2obj生成的目标文件提供<symbol_prefix><basename>_start和<symbol_prefix><basename>_end符号,分别代表二进制数据的起始地址和终止地址。参考以下用例:(symbol_prefix = "_foo_", basename = "bar", C++20)
cpp
#include <span>
extern "C"
{
extern const std::byte _foo_bar_start[];
extern const std::byte _foo_bar_end[];
}
void example()
{
const auto data = std::span<const std::byte>(_foo_bar_start, _foo_bar_end);
}binutils.readsyms
读取对象文件符号(自动检测格式:COFF, ELF, 或 Mach-O)。
函数原型
API
lua
binutils.readsyms(binaryfile: <string>)参数说明
| 参数 | 描述 |
|---|---|
| binaryfile | 必需。输入对象文件路径 |
返回值说明
| 返回值 | 描述 |
|---|---|
<table> | 符号列表 |
binutils.deplibs
获取依赖库列表。
函数原型
API
lua
binutils.deplibs(binaryfile: <string>)参数说明
| 参数 | 描述 |
|---|---|
| binaryfile | 必需。输入二进制文件路径 |
返回值说明
| 返回值 | 描述 |
|---|---|
<table> | 依赖库列表 |
binutils.rpath_list
从二进制文件获取 rpath 列表(自动检测格式:ELF 或 Mach-O)。
函数原型
API
lua
binutils.rpath_list(binaryfile: <string>)参数说明
| 参数 | 描述 |
|---|---|
| binaryfile | 必需。输入二进制文件路径 |
返回值说明
| 返回值 | 描述 |
|---|---|
<table> | rpath 列表 |
binutils.extractlib
解压静态库到目录。
函数原型
API
lua
binutils.extractlib(libraryfile: <string>, outputdir: <string>, opt: <table>)参数说明
| 参数 | 描述 |
|---|---|
| libraryfile | 必需。输入静态库文件路径 |
| outputdir | 必需。输出目录路径 |
| opt | 可选。选项(保留) |