2013-07-24 15 views
6

Ich erhalte diese Fehler, wenn ich meinen Code kompiliere. Ich habe alle Header unter Benutzer/includeFehler beim Kompilieren erhalten?

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 

meine Kernel-Version „Linux amit-bhaira 3.8.0-26-generiC# 38-Ubuntu SMP Mon 17. Juni 21.46.08 UTC 2013 i686 i686 i686 ist GNU/Linux ". Derselbe Code läuft auf einem anderen Linux-Rechner.

bitte helfen Sie mir, dieses Problem zu beheben.

Danke.

+0

Ist Ihr Code einschließlich ? –

+1

Glauben Sie wirklich, dass wir Ihre Compilerfehler auf magische Weise lösen können, ohne den Code zu sehen? –

+1

@ H2CO3: Für * diese * besonderen, ja. –

Antwort

40

hinzufügen #include <unistd.h>

es auf anderen Plattformen funktioniert, weil sie mit einer alten Version von gcc (< 4.7), die versehentlich eingeschlossen unistd.h in einigen System-Header kompilieren.

2

Sie haben #include <unistd.h> in Ihrem Programm vergessen.

+0

nein ich nicht, ich habe erwähnt, dass der gleiche Code auf einem anderen Linux-Rechner läuft. –

+1

Es wird wahrscheinlich von einer anderen Header-Datei angesaugt - das passiert. Da Ihr Code absichtlich Dinge wie "fork" und "execl" verwendet, sollten Sie ihn selbst hinzufügen und sich nicht darauf verlassen, dass er indirekt einbezogen wird. –

6

Vom fork(2) Manpage:

SYNOPSIS 
     #include <unistd.h> 

Vom exec(3) Manpage:

SYNOPSIS 
     #include <unistd.h> 

Vom getpid(2) Manpage:

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

Vom sleep(3) Manpage:

SYNOPSIS 
     #include <unistd.h> 
Verwandte Themen