代码之家  ›  专栏  ›  技术社区  ›  Sherwood Wang

从C声明生成二进制接口规范

  •  4
  • Sherwood Wang  · 技术社区  · 11 年前

    我正在为我的玩具语言实现外国函数接口。我希望重用操作系统提供的C头文件,而不是手动编写兼容声明。

    如何从C头文件中获取特定平台的二进制接口(如函数参数类型、结构的内存布局、类型对齐、优化提示)?有没有办法使用Clang或GCC来实现这一点?

    1 回复  |  直到 11 年前
        1
  •  3
  •   linuxbuild    9 年前

    使用 -dump 的选项 abi-compliance-checker 工具它将创建输入头文件的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
    

    额外的 -headers-only 如果尚未在描述符中指定任何共享库(在 <libs>...</libs> XML描述符的部分)。