2013-07-24 6 views
6

私は自分のコードをコンパイルしているときにこれらのエラーが発生しています。私は、ユーザー/下のすべてのヘッダーがコンパイル中にエラーが発生しましたか?

g++ -Ip_appmanager/inc -Icore/inc p_appmanager/src/appmanager_process.cpp -o p_appmanager/obj/appmanager -lpthread -lparser 
p_appmanager/src/appmanager_process.cpp: In function ‘int main(int, char**)’: 
p_appmanager/src/appmanager_process.cpp:33:21: error: ‘getpid’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:101:19: error: ‘fork’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:105:70: error: ‘execl’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:109:19: error: ‘getppid’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:124:19: error: ‘fork’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:128:61: error: ‘execl’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:132:19: error: ‘getppid’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:147:19: error: ‘fork’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:151:73: error: ‘execl’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:155:19: error: ‘getppid’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:170:19: error: ‘fork’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:175:70: error: ‘execl’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:179:19: error: ‘getppid’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp: In function ‘void* pingThread(void*)’: 
p_appmanager/src/appmanager_process.cpp:302:11: error: ‘sleep’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp: In function ‘void* fifoThread(void*)’: 
p_appmanager/src/appmanager_process.cpp:815:22: error: ‘fork’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:818:72: error: ‘execl’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:842:64: error: ‘execl’ was not declared in this scope 
p_appmanager/src/appmanager_process.cpp:865:72: error: ‘execl’ was not declared in this scope 
make: *** [all] Error 1 

が含まれてい私のカーネルバージョンは、「Linuxのアミット・bhaira 3.8.0-26-一般的な#38-UbuntuのSMP月6月17日21時46分08秒UTC 2013 i686のi686のi686のですGNU/Linux "を参照してください。同じコードが別のLinuxマシンで実行されています。

この問題を解決するのを手伝ってください。

ありがとうございました。

+0

コードにはが含まれていますか? –

+1

正直なところ、コードを見ずにコンパイルエラーを魔法のように解決できると思いますか? –

+1

@ H2CO3:これらの特定のものについては、はい。 –

答えて

40

彼らは誤っていくつかのシステムヘッダに含まれるunistd.hのgccの古いバージョン(< 4.7)を使用してコンパイルされているので、それが他のプラットフォーム上で動作#include <unistd.h>

を追加します。

2

あなたのプログラムには#include <unistd.h>をお忘れですか? exec(3) manページから

SYNOPSIS 
     #include <unistd.h> 

getpid(2) manページから

SYNOPSIS 
     #include <unistd.h> 

sleep(3) manページから

SYNOPSIS 
     #include <sys/types.h> 
     #include <unistd.h> 

fork(2) manページから

+0

いいえ、私は同じコードが別のLinuxマシンで実行されていると言いました。 –

+1

これはおそらく、他のヘッダファイルによって吸い込まれている可能性があります。あなたのコードは 'fork'や' execl'のようなものを意図的に使用しているので、間接的にインクルードすることには依存しません。 –

6

SYNOPSIS 
     #include <unistd.h> 
関連する問題