gpt4 book ai didi

OCamlbuild 和构建原生动态链接库

转载 作者:行者123 更新时间:2023-12-01 09:00:09 25 4
gpt4 key购买 nike

我发布了一个question on the ocaml listserv没有人回应,我希望这里有人可以称我为白痴,确认情况,或者提供创造性的解决方案。

当通过 ocamlbuild 构建动态库时,我卡在了最后的链接行上,

/opt/ocaml-3.12.1/bin/ocamlopt.opt -shared -verbose -cc gcc plugins/example.cmx -o plugins/example.cmxs -ccopt -v
+ as -o 'plugins/example.cmxs.startup.o' '/tmp/camlstartupe6993f.s'
+ gcc -o 'plugins/example.cmxs' '-L/opt/ocaml-3.12.1/lib/ocaml' -v 'plugins/example.cmxs.startup.o' 'plugins/example.o'

这会产生类似于 here 的错误.当我删除 -cc 选项并将 -shared 标志传递给 gcc 时,此错误得到修复。

/opt/ocaml-3.12.1/bin/ocamlopt.opt -shared -verbose plugins/example.cmx -o plugins/example.cmxs -ccopt -v
+ as -o 'plugins/example.cmxs.startup.o' '/tmp/camlstartup2c31a2.s'
+ gcc -shared -o 'plugins/example.cmxs' '-L/opt/ocaml-3.12.1/lib/ocaml' -v 'plugins/example.cmxs.startup.o' 'plugins/example.o'

OCamlbuild 将 -cc 选项传递给所有内容,因此删除它不是一个选项。似乎是 ocamlopt 中的错误;有没有人经历过类似的情况?我是吗编译中缺少任何东西或任何选项?

谢谢。


编辑

我的解决方案是通过 myocamlbuild.ml 中的标志传递选项

flag ["shared"; "link"]
(S [A"-ccopt";A"-shared"]);

最佳答案

此处无法重现。

Ocamlbuild 本身不传递 -cc 选项(为什么要传递?)而且我也无法在源代码中找到此类行为。所以它可能是由你的插件传递的 - 这是错误的,因为 ocamlopt 在配置时确定共享库的链接器(通常是 gcc -shared),但是如果 -cc 选项是明确指定的 - 它会很乐意使用它。

NB 选项 -shared 没有“传递”给 ocamlopt,而是启用链接动态插件,这会导致为共享库选择特殊的 C 链接器(恰好是具有相同功能的 gcc -命名选项)。指定 -cc 将其作为一个整体覆盖。

关于OCamlbuild 和构建原生动态链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8422586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com