我正在为我的玩具语言实现外部函数接口。我不想手动编写兼容的声明,而是重用操作系统提供的C头文件。
如何从C头文件中获取特定平台的二进制接口(例如函数参数的类型,结构的内存布局,类型对齐,优化提示)?有没有办法使用Clang或GCC来做到这一点?
答案 0 :(得分:3)
使用abi-compliance-checker工具的-dump
选项。它将创建输入头文件的ABI转储。添加-xml
选项以生成XML输出。
在您的情况下,您需要以下输入XML描述符(descriptor.xml):
<version>
1.0 /* any version */
</version>
<headers>
/path1/to/headers
/path2/to/headers
...
</headers>
运行该工具的命令:
abi-compliance-checker -l ANY_NAME -dump descriptor.xml -headers-only
如果未在描述符中指定任何共享库(在XML描述符的-headers-only
部分中),则需要命令中的附加<libs>...</libs>
选项。