我正在尝试从OCaml调用一个庞大的C ++库,但是我遇到了ocamlopt的问题,该错误最终以错误代码2失败。

我通过建立一个C接口来完成整个工作,并且可以使它总体上正常工作,但是一旦引用此库,构建就会中断。

有什么方法可以知道到底是什么失败了吗?我尝试了-verbose标志,但它仅显示命令行参数(相当长)。

关于如何调查这样的无声故障,您有任何提示吗?

最佳答案

TL; DR;检查您是否有足够的内存和/或磁盘空间。

ocamlopt被信号杀死或耗尽内存(或两者都耗尽),检查dmesg输出,从内核中查找OOM消息,还使用htop来理解时,可能会发生这种情况。内存占用量。

另外,由于在尝试与C ++库链接时会发生这种情况,因此很有可能是ld进程失败了(同样,很可能是OOM),因为ocamlopt使用了系统链接程序。

09-25 20:02