C++ Linux gcc编译问题

C++ Linux gcc编译问题,c++,linux,gcc,C++,Linux,Gcc,我是Linux新手,我试图编译一个库。CMAKE在配置时非常有效,但使用make编译时会出现如下错误: 错误:“\u stat64”未在此作用域中声明 ____stat64 statbuf; 错误:“\u stat64”未在此作用域中声明 ____stat64 statbuf; 错误:“getcwd”未在此作用域中声明 if(NULL!=getcwd(chFile,最大路径)) 也许我有丢失头文件的问题?我的gcc版本是 线程模型:posix gcc版本5.4.0 20160609(Ubuntu

我是Linux新手,我试图编译一个库。CMAKE在配置时非常有效,但使用make编译时会出现如下错误:

错误:“\u stat64”未在此作用域中声明 ____stat64 statbuf; 错误:“\u stat64”未在此作用域中声明 ____stat64 statbuf; 错误:“getcwd”未在此作用域中声明 if(NULL!=getcwd(chFile,最大路径))

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

谢谢,
Ingo

如果您在终端中键入
man 3p getcwd
,您将发现您需要

#include <unistd.h>
#包括
调用getcwd


现代C++交叉平台的方法是使用<代码>文件系统< /C>头和<代码> CurrutsPATH()/Cux>函数.< /P> < P>验证您的机器上安装了Linux头。要确保它们已安装,请在基于Debian的发行版上运行:

sudo apt-get install linux-headers-generic
另外,请验证是否包含Michael Surette已经显示的
unistd
标题。为清楚起见,您应包括以下代码中提到的标题:

#include <unistd.h>

int main() {
    ...
}
#包括
int main(){
...
}

您是否安装了linux头文件?如果我键入man 3p getcwd,我得到:在第3p节中没有getcwd的手动输入。默认情况下,某些发行版不安装手册页。我的OpenSUSE有。如果你的没有,用谷歌搜索它,你就会得到手册页。你应该会在man getcwd中得到一个结果,这会将此函数的位置指向正确的标题,即
unistd
。如果我尝试添加标题,系统会告诉我它们已经安装。所以我认为这不是问题所在。那么你应该在编译单元中包含标题。怎么做(新手)?我编辑了这个问题,让你更清楚我的意思是@Ingo。