Ocaml 运行程序时没有Netaccel_链接错误的源文件
我有一个OCaml程序,它在Ubuntu 16上运行得很好,但是当重新编译并在Ubuntu 20上运行时,我得到以下错误:-Ocaml 运行程序时没有Netaccel_链接错误的源文件,ocaml,Ocaml,我有一个OCaml程序,它在Ubuntu 16上运行得很好,但是当重新编译并在Ubuntu 20上运行时,我得到以下错误:- $ ocamldebug ./linearizer OCaml Debugger version 4.08.1 (ocd) r Loading program... done. Time: 89534 Program end. Uncaught exception: Sys_error "Illegal seek" (ocd) b T
$ ocamldebug ./linearizer
OCaml Debugger version 4.08.1
(ocd) r
Loading program... done.
Time: 89534
Program end.
Uncaught exception: Sys_error "Illegal seek"
(ocd) b
Time: 89533 - pc: 624888 - module Netaccel_link
No source file for Netaccel_link.
我认为这是由于缺少开发库造成的,但是:-
$ sudo apt install libocamlnet-ocaml-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
libocamlnet-ocaml-dev is already the newest version (4.1.6-1build6).
0 upgraded, 0 newly installed, 0 to remove and 20 not upgraded.
我在Ubuntu 20上缺少了什么设置步骤?这看起来像是libocamlnet中的一个回归错误,你应该在那里报告一个问题,或者,我有点悲观,你会得到任何响应,你可以尝试自己调试这个问题 您面临的问题与缺少库无关(它们将在安装过程中报告,或者,如果包损坏,最终导致链接器错误)。然而,这可能是由于系统的某些错误配置造成的。如果这是真的,那么你很幸运,因为你可以自己修复它 我将给您一些建议,可能有助于您调试此问题。更多信息,请尝试将其用作更合适的媒体(因此不支持此类讨论,我们可能会被管理员删除)
ESPIPE
Unix错误)应用seek操作时,将引发非法seek异常。所以请检查您的输入。可能是以前在Ubuntu中被视为文件的东西现在变成了管道或套接字
ltrace
或strace
来查明罪犯,例如
strace
strace ./linearizer
gdb
而不是使用ocamldebug
。您可以使用gdb
的接口来提供源代码的路径(尽管它很可能无法工作,因为ocamlnet
没有使用调试信息编译)。我相信这会给你一个更有意义的回溯
objdump-d
查看二进制文件的反汇编。OCaml使用了一种非常可读和直观的名称篡改方案(\uuuuuuu
),因此您可以很容易地找到源代码(搜索.ml
文件并在那里查找
)
这看起来像是libocamlnet中的一个回归错误,您应该在那里报告一个问题,或者,我有点悲观,您将得到任何响应,您可以尝试自己调试这个问题 您面临的问题与缺少库无关(它们将在安装过程中报告,或者,如果包损坏,最终导致链接器错误)。然而,这可能是由于系统的某些错误配置造成的。如果这是真的,那么你很幸运,因为你可以自己修复它 我将给您一些建议,可能有助于您调试此问题。更多信息,请尝试将其用作更合适的媒体(因此不支持此类讨论,我们可能会被管理员删除)
ESPIPE
Unix错误)应用seek操作时,将引发非法seek异常。所以请检查您的输入。可能是以前在Ubuntu中被视为文件的东西现在变成了管道或套接字
ltrace
或strace
来查明罪犯,例如
strace
strace ./linearizer
gdb
而不是使用ocamldebug
。您可以使用gdb
的接口来提供源代码的路径(尽管它很可能无法工作,因为ocamlnet
没有使用调试信息编译)。我相信这会给你一个更有意义的回溯
objdump-d
查看二进制文件的反汇编。OCaml使用了一种非常可读和直观的名称篡改方案(\uuuuuuu
),因此您可以很容易地找到源代码(搜索.ml
文件并在那里查找
)