Почему 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++ мьютекс должен делать эту работу.