Почему cpp говорит мне 'неопределенная ссылка на mtx_init'? Я уже включаю заголовки

У меня возникли проблемы при написании AC-программы на FreeBSD 9.2

Я хочу использовать блокировку мьютекса, чтобы помочь мне контролировать значение определенной переменной,

и я прочитал эту ссылку: http://www.freebsd.org/cgi/man.cgi?query=mutex&sektion=9

Я уже включаю эти заголовки

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/param.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/kernel.h>
#include <sys/_mutex.h>

но cpp всегда говорит мне следующее:

3.c:(.text+0x25): undefined reference to `mtx_init'
3.c:(.text+0xa0): undefined reference to `mtx_trylock'
3.c:(.text+0xd3): undefined reference to `mtx_unlock'

Я использую эту команду для компиляции:

gcc 3.c 

Пожалуйста, помогите мне выяснить проблему! Спасибо!!!

1 ответ

mtx_init это функция ядра Если вы не компилируете свой код как часть самого ядра модуля ядра (что не требуется, так как это потребовало бы передачи намного большего количества флагов в gcc), вы не можете использовать блокирующие примитивы ядра.

Для пользовательского кода вы можете использовать pthreads или ряд других библиотек. Для C++ Boost или C++ мьютекс должен делать эту работу.

Другие вопросы по тегам