gcc: 未定义的函数引用

gcc: undefined reference to function

我知道有很多类似的问题,但我别无选择,只能 post 这个问题,因为即使经过数小时的谷歌搜索,我也没有找到问题的答案。感谢您的理解。

我用 gcc 链接如下。

gcc myprogram.c csapp.c -o a.out

csapp.c 定义了 myprogram.c 中使用的函数。 Myprogram.c 包括 csapp.h.

出现以下错误:

/usr/bin/ld: /tmp/ccIWxAk3.o: in function `Pthread_create':
csapp.c:(.text+0x121e): undefined reference to `pthread_create'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `Pthread_cancel':
csapp.c:(.text+0x1257): undefined reference to `pthread_cancel'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `Pthread_join':
csapp.c:(.text+0x129b): undefined reference to `pthread_join'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `Pthread_detach':
csapp.c:(.text+0x12d4): undefined reference to `pthread_detach'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `Pthread_once':
csapp.c:(.text+0x1343): undefined reference to `pthread_once'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `Sem_init':
csapp.c:(.text+0x1370): undefined reference to `sem_init'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `P':
csapp.c:(.text+0x139f): undefined reference to `sem_wait'
/usr/bin/ld: /tmp/ccIWxAk3.o: in function `V':
csapp.c:(.text+0x13ce): undefined reference to `sem_post'
collect2: error: ld returned 1 exit status

这些肯定是在csapp.c中定义的。为什么会出现这些错误?

你应该用 -pthread

编译和 link