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 5.4.0-6ubuntu1~16.04.11) 谢谢,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
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。