2013-07-24 25 views
6

Ricevo questi errori durante la compilazione del mio codice. Ho tutte le intestazioni sotto utente/includoOttenere errori durante la compilazione?

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 

la mia versione del kernel è "Linux Amit-bhaira 3.8.0-26-generiC# 38-Ubuntu SMP Lun 17 Giu 21:46:08 UTC 2013 i686 i686 i686 GNU/Linux ". Lo stesso codice è in esecuzione su un altro computer Linux.

please help me per risolvere questo problema.

Grazie.

+0

Il tuo codice include ? –

+1

Credi onestamente che possiamo risolvere magicamente gli errori del compilatore senza vedere il codice? –

+1

@ H2CO3: Per * quelli * particolari, sì. –

risposta

40

Aggiungi #include <unistd.h>

Funziona su altre piattaforme, perché sono la compilazione con una vecchia versione di gcc (< 4.7), che accidentalmente incluso unistd.h in alcune intestazioni di sistema.

2

Hai dimenticato #include <unistd.h> nel tuo programma.

+0

no, non ho, ho detto che lo stesso codice è in esecuzione su un altro computer Linux. –

+1

Probabilmente è stato risucchiato da qualche altro file di intestazione - questo succede. Dal momento che il tuo codice usa intenzionalmente cose come 'fork' e' execl', dovresti includerlo tu stesso e non fare affidamento su di esso per includerlo indirettamente. –

6

Dalla pagina fork(2) man:

SYNOPSIS 
     #include <unistd.h> 

Dalla pagina exec(3) man:

SYNOPSIS 
     #include <unistd.h> 

Dalla pagina getpid(2) man:

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

Dalla pagina sleep(3) man:

SYNOPSIS 
     #include <unistd.h> 
Problemi correlati