当前位置: 技术问答>linux和unix
跪请高手讲解:pthread怎么啦?
来源: 互联网 发布时间:2015-06-18
本文导语: 写了个程序: #include void init_system() { pthread_mutex_init(&mutex_aaaa, NULL); if (pthread_create(&keypad_id, NULL, keypad_thread, NULL)) { perror("create keypad thread false!"); exit(0); } } LDFLAGS = -Wall -static -lpthread ...
写了个程序:
#include
void init_system() {
pthread_mutex_init(&mutex_aaaa, NULL);
if (pthread_create(&keypad_id, NULL, keypad_thread, NULL)) {
perror("create keypad thread false!");
exit(0);
}
}
LDFLAGS = -Wall -static -lpthread
怎么编译成静态的可执行文件时,总是报错?
而没有用线程库时却没问题!
怎么回事?
#include
void init_system() {
pthread_mutex_init(&mutex_aaaa, NULL);
if (pthread_create(&keypad_id, NULL, keypad_thread, NULL)) {
perror("create keypad thread false!");
exit(0);
}
}
LDFLAGS = -Wall -static -lpthread
怎么编译成静态的可执行文件时,总是报错?
而没有用线程库时却没问题!
怎么回事?
|
这是因为pthtread.o是被包含在了连接库中,也就是说在/usr/include下有pthread.h文件,但是没有它的源文件,所以在连接时找不到pthread_create的定义,当然会报错.
|
楼上正解.
|
把-static去掉好了。
|
LDFLAGS = -Wall -static
gcc -LDFLAGS a.o b.o -lpthread
要将-lpthread放在后面
gcc -LDFLAGS a.o b.o -lpthread
要将-lpthread放在后面
|
同意楼上的。-lpthread需要放在.o后面。