[問題] Semaphore 和pthread的問題

看板C_and_CPP (C/C++)作者 (bear)時間11年前 (2014/10/31 21:57), 11年前編輯推噓3(3014)
留言17則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) <pthread.h> <semaphore.h> 問題(Question): pthread 和 semaphore 一起使用的問題, 在網路上找到的許多範例 compile 都會出現一樣的問題 會顯示`sem_init'、`pthread_create'、`sem_wait'這些都未定義 不知道問題出在哪邊 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/9Lt6HuBF 補充說明(Supplement): --

10/31 22:10, , 1F
gcc -o test test.c -lpthread -lrt
10/31 22:10, 1F
這樣可以執行 可是我有點問題 為什麼一開始已經include進去了還要再加上-l這些指定連結的函示庫?

10/31 22:23, , 2F
cc -pthread
10/31 22:23, 2F
※ 編輯: ck80865 (140.113.125.9), 10/31/2014 22:29:56

10/31 22:36, , 3F
include給cpp看 link是ld的事
10/31 22:36, 3F

10/31 22:44, , 4F
可以說include只是定義 實際要呼叫誰是ld去找來link的
10/31 22:44, 4F

10/31 22:45, , 5F
所以你要告訴他function在pthread(libpthread.so)
10/31 22:45, 5F

10/31 22:46, , 6F
-l找不到就要再加-Lpath設定dir 詳細的gcc -v可以看
10/31 22:46, 6F

10/31 22:58, , 7F
header 只是元件說明書, 實際元件要 -lxxx 從程式庫拿出來
10/31 22:58, 7F

11/01 12:56, , 8F
header是讓你找到.h 我舉個例子,你可以試試看寫一個
11/01 12:56, 8F

11/01 12:57, , 9F
標準的class, 只寫header不寫cpp,你會發現若是其他
11/01 12:57, 9F

11/01 12:57, , 10F
檔案include header並且用它, compile是會過的,死在
11/01 12:57, 10F

11/01 12:58, , 11F
ld(linking)而已
11/01 12:58, 11F

11/01 12:58, , 12F
普通我們說的三種phase就是compile, linking, run
11/01 12:58, 12F

11/01 12:59, , 13F
這個觀念一定要弄清楚 不然保證你未來2年很難過
11/01 12:59, 13F

11/01 13:51, , 14F
又要推"程式設計師的自我修養"了XD
11/01 13:51, 14F

11/02 12:35, , 15F
樓上那本都缺貨 買不到= =
11/02 12:35, 15F

11/02 17:05, , 16F
還沒搞懂linking time/runtime看那本書是找死而已XD
11/02 17:05, 16F

11/02 17:06, , 17F
還是循序漸進慢慢先學下去吧~
11/02 17:06, 17F
文章代碼(AID): #1KKvLEeO (C_and_CPP)
文章代碼(AID): #1KKvLEeO (C_and_CPP)