第 35 章 dynlink 库:对象文件的动态加载和链接

dynlink 库支持对运行中的字节码程序中的字节码对象文件(.cmo.cma 文件)或运行中的原生程序中的原生插件(通常为 .cmxs 文件)进行类型安全的动态加载和链接。类型安全性通过限制运行程序中加载的对象文件可以访问的模块集,并检查运行程序和加载的对象文件是否针对这些模块的相同接口进行编译来确保。在原生代码中,还有一些关于实现的兼容性检查(以避免跨模块优化的错误);在构建原生插件时隐藏 .cmx 文件可能很有用,这样它们就可以独立于主程序中模块的实现。

使用 dynlink 库的程序只需要使用 -I +dynlink 包含 dynlink 库目录,并将其对象文件和其他库与 dynlink.cmadynlink.cmxa 链接。

注意:为了确保动态加载的模块可以访问主程序可见的所有库(而不仅仅是主程序中实际使用的库部分),使用 dynlink 库的程序应该使用 -linkall 链接。