gpt4 book ai didi

OCamlbuild 编译失败,提示 Netsys 的实现没有提供

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

我正在尝试编译使用 xmlrpc-light library 编写的 XML-RPC 服务器。在带有 ocamlbuild 的 OCaml 中,但我得到:

$ ocamlbuild server.native
Finished, 0 targets (0 cached) in 00:00:00.
+ ocamlfind ocamlopt -linkpkg -package xmlrpc-light -package unix -package threads -package netsys -thread server.cmx -o server.native
File "_none_", line 1, characters 0-1:
Error: No implementations provided for the following modules:
Netsys referenced from /usr/lib/ocaml/equeue/equeue.cmxa(Uq_engines)
Command exited with code 2.
Compilation unsuccessful after building 4 targets (3 cached) in 00:00:00.

请注意,我有一个 myocamlbuild.mlthis one 这样的文件和 _tags包含一行的文件:
<server.ml> or <server.native>: pkg_unix,pkg_netsys,pkg_xmlrpc-light,pkg_threads

这个插件在其他情况下对我来说很好用(例如,对于同一客户端/服务器应用程序的 client.native),但不适用于 server.native。 .投诉表明库 Netsys 对编译器不可用。但我们得到
$ ocamlfind query netsys
/usr/lib/ocaml/netsys

表示 netsys 安装在 /usr/lib/ocaml/netsys .检查该目录给了我:
$ ls /usr/lib/ocaml/netsys
META libnetsys.a netsys.a netsys.cma netsys.cmi netsys.cmxa netsys.mli

还,
$ ocamlfind list | grep netsys
netsys (version: 2.2.9)

因此,确实安装了一个名为 netsys 的库,它确实有一个 cmxa 文件可供使用,但出于某种奇怪的原因,ocamlbuild 提示没有为模块 Netsys 提供实现。 ocamlbuild 可以读取 /usr/lib/ocaml/equeue/equeue.cmxa 的事实应该足以得出结论,在查找库方面,关于环境($PATH 等)的一切都应该没问题。

这一切都在 Debian 6.0 中,我的 OCaml 的版本是 3.11.2。

经过一番浏览,我发现了一个 svn commit message ( repository diff ) 这表明它可能与使用的线程数有关。而且,事实上,我在代码的某处使用了 Mutex(检查 this other question 中的 server.mlclient.ml 的代码)。如果我从我的 server.ml 中删除 Mutex 内容错误仍然发生。但是如果我另外删除 pkg_threads来自 _tags文件然后一切编译。所以,我的结论是我不能直接将线程库与 xmlrpc-light 一起使用。 ,这很奇怪。

最佳答案

恕我直言,队列 META 是错误的。将 netsys 添加到依赖项可以解决您的问题:

sed -i 's/threads/netsys,threads/' /usr/lib/ocaml/equeue/META

关于OCamlbuild 编译失败,提示 Netsys 的实现没有提供,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6784928/

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