我正在尝试调试,因此我可以托管游戏服务器,这是我的下一个错误。我只在Linux上工作了很短的一段时间,不知道从哪里开始。
这是我正在使用的错误:
null
答案 0 :(得分:3)
atoll
是一个标准的C库函数,在<stdlib.h>
中声明,在C99中引入。
其声明是:
long long int atoll(const char *nptr);
显然,您正在编译的软件有一个名为tool.h
的头文件,声明:
unsigned long long atoll(char *string);
该声明不正确且不必要。如果底层实现不支持它,那么明确声明{em}可能是有意义的,但它至少应该被正确声明 - 并且它不应该被声明如果atoll
已经宣布它,那就完全没有了。
您正在构建的软件无论是错误还是配置错误。如果您可以识别该软件(它是一个开源软件包吗?),我们可以看看它。或者您可以联系作者并指出这个问题。
根据一些评论,您很可能正在尝试构建Astonia。我自己下载了源代码,并且它报告了您的问题(虽然使用不同的行号;也许您没有构建最新版本)。源声明但未定义<stdlib.h>
函数。评论声明应该解决这个具体问题,尽管可能还有其他问题。你应该contact the author。
答案 1 :(得分:1)
atoll()
是一个C ++标准库(stdlib)转换函数。
看起来你在两个不同的头文件中遇到了两个不同的定义。为什么server.c
使用#include#
引入两个冲突的标头.h
文件链?
许多C和C ++开源软件包都有./configure
命令。如果你有一个命令,你应该重新运行吗?
答案 2 :(得分:0)
我将假设我知道你要构建什么,因为我自己经历了这个并且看到了完全相同的错误。问题是,这段代码是在大约十五年前在32位Linux上构建的,而且这种冲突并不存在。现在你(我的另一个假设)尝试在64位Linux上构建它并且存在冲突。我没有C通过改变代码来解决问题,但是,如果你尝试在32位版本的linux上构建它,它将会起作用。
让我还说如果你在64位系统上解决这个问题的路径,它将不是你最后的麻烦。当在构建过程中遇到32位MySQL片段并且在64位系统上不存在时,你将打到另一面墙。