Проблема при компиляции функции C с использованием потоков в Fedora - PullRequest
0 голосов
/ 15 июля 2011

Когда я пытаюсь скомпилировать C-программу с многопоточностью в Fedora, я получаю следующую ошибку.

Имя файла abc.c

abc.c:(.text+0x39): undefined reference to `pthread_create'
abc.c:(.text+0x61): undefined reference to `pthread_create'
abc.c:(.text+0x79): undefined reference to `pthread_join'
abc.c:(.text+0x8d): undefined reference to `pthread_join'

Я зарегистрировался в / usr / include и обнаружил, что pthread.h присутствует. Также я попытался скопировать pthread.h в тот же каталог, что и abc.c

Как мне устранить эти ошибки связывания?

1 Ответ

3 голосов
/ 15 июля 2011

Как указал Джордж, вы должны связаться с библиотекой потоков gcc -o abc abc.c -pthread Причина, по которой вы получаете эти ошибки, заключается в том, что на этапе компоновки компилятор пытается заполнить все слоты, в которые он поместил заполнители для вызовов методов, которые, как он знал, были определены, но в настоящее время не знают их расположения, поскольку соответствующая библиотека не была связана еще. Как указано в caf, использование флага -pthread на этапах как компиляции, так и компоновки позволяет компилятору делать более разумный выбор в отношении того, что ему нужно использовать, чтобы быть поточно-ориентированным в определенных условиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...