Raspberry Pi(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として使用しています。
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;
}