- 論壇徽章:
- 0
|
我安裝了REDHAT 8.1的測試版正想用GCC編譯原來的一些程序,但POSIX標(biāo)準的很多函數(shù)都連接錯誤如 SEM_INIT ,POSIX_CREAT ,SEM_DESTORY
等等不知道什么原因編譯是正常的但連接就報錯,是不是要加帶什么庫參數(shù)嗎,我的頭文件包含應(yīng)該是正確的,#include "sys/utsname.h"
#include "semaphore.h"
#include "pthread.h"
#define NBUFF 10
int nitems;
struct{
int buff[NBUFF];
sem_t mutex, nempty,nstored;
}shared;
//void *produce(void *),*consume(void *);
int main (int argc,char **argv)
{
pthread_t tid_produce,tid_consume;
if (argc!=2)
printf("error usage ,please use parament" ;
nitems=atoi(argv[1]);
sem_init(&shared.mutex,0,1);
sem_init(&shared.nempty,0,NBUFF);
sem_init(&shared.nstored,0,0);
}
[root@LINUXSERVER projectlinux]# gcc -o prodcoms2 prodcoms2.c
/tmp/ccOga3vv.o(.text+0x4b): In function `main':
: undefined reference to `sem_init'
/tmp/ccOga3vv.o(.text+0x5f): In function `main':
: undefined reference to `sem_init'
/tmp/ccOga3vv.o(.text+0x73): In function `main':
: undefined reference to `sem_init'
collect2: ld returned 1 exit status
就上面這個程序,為什么連接的時候會報錯呢,不得其解,誰能解答,單獨只是編譯程序是可以過去得。但不能連接運行。還有線程的函數(shù)在我的機器上也是類似的問題,如PTHREAD_CREAT ,等等,不知道是不是要支持POSIX標(biāo)準的函數(shù)要有什么特殊設(shè)置么, |
|