2013-07-24 75 views
6

Tôi gặp phải các lỗi này khi tôi biên dịch mã của mình. Tôi có tất cả các tiêu đề dưới user/bao gồmGặp lỗi khi biên dịch?

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 

phiên bản kernel của tôi là "Linux amit-bhaira 3.8.0-26-generiC# 38-Ubuntu SMP Mon 17 Tháng Sáu 21:46:08 UTC 2013 i686 i686 i686 GNU/Linux ". Cùng một mã đang chạy trên một máy linux khác.

hãy giúp tôi khắc phục vấn đề này.

Cảm ơn.

+0

Mã của bạn có bao gồm không? –

+1

Bạn có thực sự tin rằng chúng tôi có thể giải quyết các lỗi biên dịch một cách kỳ diệu mà không cần nhìn thấy mã không? –

+1

@ H2CO3: Dành cho * những người * cụ thể, vâng. –

Trả lời

40

Thêm #include <unistd.h>

Nó hoạt động trên các nền tảng khác bởi vì chúng được biên soạn với một phiên bản cũ của gcc (< 4.7) mà vô tình bao gồm unistd.h trong một số tiêu đề hệ thống.

2

Bạn đã quên #include <unistd.h> trong chương trình của mình.

+0

không, tôi đã đề cập rằng cùng một mã đang chạy trên một máy linux khác. –

+1

Nó có thể bị hút bởi một số tập tin tiêu đề khác - điều này không xảy ra. Vì mã của bạn đang cố tình sử dụng những thứ như 'fork' và' execl', bạn nên tự bao gồm nó, và không dựa vào nó được bao gồm gián tiếp. –

6

Từ trang fork(2) người đàn ông:

SYNOPSIS 
     #include <unistd.h> 

Từ trang exec(3) người đàn ông:

SYNOPSIS 
     #include <unistd.h> 

Từ trang getpid(2) người đàn ông:

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

Từ trang sleep(3) người đàn ông:

SYNOPSIS 
     #include <unistd.h> 
Các vấn đề liên quan