奇怪的多線程鏈接問題,記錄一下

代碼很簡單,如下;

 

 

  1. #include <unistd.h>
  2. #include <pthread.h>
  3. #include <iostream>
  4. #include <string>
  5. using namespace std;
  6. void* pfn(void* pParam)
  7. {
  8.  const char* psz = (char*)pParam;
  9.  cout << psz << endl;
  10.  pthread_exit(0);
  11. }
  12. void* create(const char* psz)
  13. {
  14.  pthread_t tid = 0;
  15.  pthread_attr_t attr;
  16.  pthread_attr_init(&attr);
  17.  pthread_create(&tid, &attr, pfn, (void*)psz);
  18. }
  19. int main(int argc, char* argv[])
  20. {
  21.  const char* psz = "Hello, thread!";
  22.  create(psz);
  23.  sleep(1000);
  24.  return 0;
  25. }

編譯時居然不用-lpthread選項能通過,平臺是SUSE10.0企業版。

運行時死活到pthread_create時出現段錯誤,原因是函數的地址爲零。

化了好長時間,下載了OpenSUSE10.3裝了起來,終於沒有問題了,當然鏈接時要指定-lpthread

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章