У меня возникли проблемы с размещением опции -l
при использовании gcc
.Вот урезанная версия для воспроизведения проблемы.
tc:
#include <pthread.h>
int main() {
pthread_create(0, 0, 0, 0);
}
и в терминале:
$ gcc -lpthread t.c
/tmp/ccmkwV7B.o: In function `main':
t.c:(.text+0x29): undefined reference to `pthread_create'
collect2: ld returned 1 exit status
$ gcc t.c -lpthread
$ (compiles ok)
Почему я должен поставить -lpthread
вконец, чтобы заставить это работать?И кажется, что эта проблема возникает только на 32-битных Linux.
Информация о моем окружении прикреплена ниже:
gcc -lpthread t.c
не работает на этом компьютере.
$ gcc --version
gcc (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1
$ uname -rm
3.0.0-12-generic i686
gcc -lpthread t.c
работает на этом компьютере.
$ uname -rm
2.6.18-274.3.1.el5 x86_64
$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51)
Я посмотрел руководство по gcc, и там написано, что "размещение -l имеет значение" .Что именно это значит?