Nim-lang (nimrod) 致命错误:limits.h: No such file or directory

问题描述

我正在学习 Nim 语言。每当我尝试使用以下命令运行代码时:nim c --run hello.nim, 我收到此错误

Hint: used config file '/etc/nim/nim.cfg' [Conf]
Hint: system [Processing]
Hint: widestrs [Processing]
Hint: io [Processing]
Hint: hello [Processing]
CC: stdlib_io.nim
CC: stdlib_system.nim
CC: hello.nim
Error: execution of an external compiler program 'gcc -c  -w  -I/usr/lib/nim -I/home/celyes/Scripts/Nim -o /home/celyes/.cache/nim/hello_d/stdlib_io.nim.c.o /home/celyes/.cache/nim/hello_d/stdlib_io.nim.c' Failed with exit code: 1

In file included from /usr/lib/gcc/x86_64-linux-gnu/9/include/syslimits.h:7,from /usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h:34,from /usr/lib/nim/nimbase.h:257,from /home/celyes/.cache/nim/hello_d/stdlib_io.nim.c:9:
/usr/lib/gcc/x86_64-linux-gnu/9/include/limits.h:194:15: Fatal error: limits.h: No such file or directory
  194 | #include_next <limits.h>  /* recurse down to the real one */
      |               ^~~~~~~~~~
compilation terminated.

解决方案有什么想法吗?

解决方法

因为我假设您使用一个小型 Nim 程序进行了第一次测试,所以提供这几行代码可能不会真正引起您的注意。好吧,你的 Linux 发行版和你的 Nim 版本也很有趣,Nim 0.11 今天的方式不太好:-)

由于 Nim 是一种编译语言,通常将编译过程和程序执行过程分开是一个好主意,这样就很明显是编译错误还是运行时错误。您的调用 nim c --run hello.nim 将编译并运行该程序。一个普通的 nim c hello.nim 只会编译,所以很明显它是编译错误。 (确实在您的情况下,编译步骤似乎很明显是问题所在,但我已经看到了不太清楚的问题......)

但是对于您的实际问题,我已经看到一些人的此类错误消息,原因是实际的 linux 发行版存在问题,并且发行版安装 C 编译器的方式不完整,我认为缺少 build-essentials .有关详细信息,请参阅此 Nim 论坛主题

https://forum.nim-lang.org/t/6571

当你能找到问题的真正原因并且不是你自己的错时,那么你可以将它报告给你的发行版,甚至可以报告给 Nim github 问题跟踪器,这样就可以避免新人出现此类问题未来。

当一切正常时,你是一个初学者,想要学习 Nim,也许阅读

http://ssalewski.de/nimprogramming.html

或其他一些教程。