私のシステムでバグを見つけようと邪魔になりました。それは文字通り 私を怒らせる。Ubuntuでunistd.hが見つからない人はいますか?
システム:Ubuntu 16.04 LTS、gcc & g ++ 4.9、5.3 5.4利用可能です。
私はポイントクラウド登録用のコードをコンパイルしようとしていましたが、マシンを更新しなかったため、何らかの理由でBoostがスレッディングを無効にし、スレッドライブラリが見つからないというエラーが複数発生しました。私は、GLibの定義を調べているブーストヘッダのセクションにすべてを追いかけると、コンパイラはgccやg ++のunistd.hを見ることができないようです。 ファイルをチェックしたが、すべてがあるが、文字通り見ることはできない。 -Iフラグを使って、コンパイラがディレクトリを見るのを試みました。
例cコード。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
int main (int argc, char *argv[])
{
int fd1;
char buf[128];
fd1 = open(argv[1], O_WRONLY | O_CREAT);
if (fd1 == -1) {
perror("File cannot be opened");
return EXIT_FAILURE;
}
scanf("%127s", buf);
write(fd1, buf, strlen(buf));
close(fd1);
return 0;
}
私はコマンドg++ test_unistd.cpp -o main
を使用してコンパイルしようとすると、私は私が見ることができる
/home/user/test_unistd.cpp: In function ‘int main(int, char**)’:
/home/user/test_unistd.cpp:20:32: error: ‘write’ was not declared in this scope
write(fd1, buf, strlen(buf));
^
/home/user/test_unistd.cpp:22:14: error: ‘close’ was not declared in this scope
close(fd1);
すべてのファイルは、私は問題が何であるかを見つけ出すように見えることはできません、があります。
'g ++ -E test_unistd.cpp -o test_unistd.i'は何を生成しますか? – melpomene
あなたが持っているエラーは、 'unistd.h'が見つからないとは言わないので、あなたのシステムにヘッダが存在しています。エラーは 'write'と' close'関数を見つけることができないと言っています。 – Macmade
ところで、CはC++ではありません...これはC++コードの場合、オーバーロードを探しているコンパイラに問題があるかもしれません...渡す引数にキャストが必要な場合があります... – Macmade