Ошибка компиляции ARM Cross с использованием fcntl.h: ошибка: 'close' не был объявлен в этой области
Я перекрестная компиляция (хост: x86 linux) для raspberry pi (ARM) с помощью
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;
}
есть идеи? Я забыл включить что-то? Я использую eclipse в качестве IDE.
1 ответов
Я считаю, что это так просто:close
объявляется в <unistd.h>
, а не <fcntl.h>
. Чтобы узнать, какой файл заголовка объявляет символ, вы всегда должны сначала проверить man-страницы.
#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;
}