undefined reference to sem_open

加了semaphore.h ,還報錯undefined reference to sem_open

ERROR

scorpion@Turing-Machine:~/OSLearn/OS-Assignment-2016/4_Linux_Progress_Control/4_5_shared_memory$ make
cc -c init.c
cc -o edit init.o common.o
common.o: In function `SemInit':
common.c:(.text+0x7f): undefined reference to `sem_open'
common.c:(.text+0xa2): undefined reference to `sem_open'
common.o: In function `SemDestroy':
common.c:(.text+0xc6): undefined reference to `sem_open'
common.c:(.text+0xe3): undefined reference to `sem_open'
common.c:(.text+0xf3): undefined reference to `sem_close'
common.c:(.text+0x102): undefined reference to `sem_unlink'
common.c:(.text+0x10e): undefined reference to `sem_close'
common.c:(.text+0x11d): undefined reference to `sem_unlink'
common.o: In function `P':
common.c:(.text+0x138): undefined reference to `sem_wait'
common.o: In function `V':
common.c:(.text+0x153): undefined reference to `sem_post'
collect2: error: ld returned 1 exit status
makefile:4: recipe for target 'edit' failed
make: *** [edit] Error 1


SOLUTION
編譯的時候添加 -pthread ?
以為關于Posix的庫文件不包含在Linux的默認庫中 所以需要添加-pthread參數

gcc -pthread -o init init.o common.o

在makefile中的書寫方法

DONE

"undefined reference to" 問題解決方法 ‘

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容