14

我正在使用树莓派(ARM)交叉编译(主机:x86 linux)

arm-bcm2708hardfp-linux-gnueabi-g++

当我选择 g++ 时,一切正常并编译。但是当交叉编译时我得到:

 error: 'close' was not declared in this scope

这是简化的源代码

#include <iostream>
#include <fcntl.h>

using namespace std;
int fd;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    close(fd);
    return 0;
}

任何的想法?我忘了包括smth吗?我正在使用 Eclipse 作为 IDE。

4

1 回答 1

33

我相信它就像这样简单:close在 中声明<unistd.h>,而不是<fcntl.h>。要找出哪个头文件声明了一个符号,您应该始终首先查看手册页。

#include <iostream>
#include <unistd.h>  // problem solved! it compiles!

using namespace std;
int fd;

int main() {
    cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
    close(fd);  // but explicitly closing fd 0 (stdin) is not a good idea anyway
    return 0;
}
于 2012-10-10T18:28:31.453 回答