程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> pthread_create()使用的小問題

pthread_create()使用的小問題

編輯:C++入門知識

APUE上的一個例子
[cpp]
#include "apue.h" 
#include <pthread.h> 
#include <unistd.h> 
 
pthread_t ntid; 
 
void printids(const char *s)  

        pid_t           pid; 
        pthread_t       tid; 
 
        pid = getpid(); 
        tid = pthread_self(); 
        printf("%s pid %u tid %u (0x%x)\n", s, (unsigned int)pid, (unsigned int)tid, (unsigned int)tid); 

 
void *thr_fn(void *arg) 

        printids("new thread: "); 
        return ((void *)0); 

用gcc編譯時出現如下錯誤: www.2cto.com
11_1.c:(.text+0x2e6): undefined reference to `pthread_create'
之前使用<math.h>頭文件中的函數也預到過類似的問題,那時是在編譯是加上"-lm"選項.
而此處產生這個問題原因是:pthread 庫不是 Linux 系統默認的庫,連接時需要使用靜態庫 libpthread.a,所以在使用pthread_create()創建線程,和其他一些與線程操作相關的函數時,需要鏈接該庫。
解決方法:
(1)編譯時加上 -lpthread選項.即: gcc 11_1.c -lpthread
(2)gcc -lrt 11_1.c          (這個在網上看的有點不大理解)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved