【问题标题】:Linux gcc compile problemsLinux gcc 编译问题
【发布时间】:2019-06-09 17:32:19
【问题描述】:

我是 Linux 新手,我尝试编译一个库。 CMAKE 非常适合配置,但使用 make 编译时出现如下错误:

错误:“____stat64”未在此范围内声明 ____stat64 statbuf; 错误:“____stat64”未在此范围内声明 ____stat64 statbuf; 错误:未在此范围内声明“getcwd” if (NULL != getcwd(chFile, _MAX_PATH))

也许我有丢失头文件的问题?我的 gcc 版本是 线程模型:posix gcc 版本 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.11)

谢谢, 英戈

【问题讨论】:

标签: c++ linux gcc


【解决方案1】:

如果你在终端输入man 3p getcwd,你会发现你需要

#include <unistd.h>

调用 getcwd。

现代 C++ 跨平台方法是使用 filesystem 标头和 current_path() 函数。

【讨论】:

  • 如果我输入 man 3p getcwd 我得到:在第 3p 部分没有手动输入 getcwd
  • 一些发行版默认不安装手册页。我的 OpenSUSE 可以。如果你没有,谷歌它,你会得到手册页。
  • 你应该得到一个输入 man getcwd 的结果,它会在正确的标题上指出这个函数的位置,即unistd
【解决方案2】:

确认您的机器上安装了 linux 头文件。为了确保它们已安装,在基于 Debian 的发行版上,运行:

sudo apt-get install linux-headers-generic

还验证您是否包含 unistd 标头,正如 Michael Surette 已经展示的那样。为清楚起见,您将包含以下代码中提到的标题:

#include <unistd.h>

int main() {
    ...
}

【讨论】:

  • 如果我尝试添加标题,系统会告诉我它们已经安装。所以我认为这不是问题。
  • 那么你应该在你的编译单元中包含头文件。
  • 怎么做(新手)?
  • 我编辑了这个问题,让你更清楚我的意思@Ingo。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多