Есть такой код:
#include <iostream>
#include <mutex>
class Test
{
public:
static std::mutex mutex;
};
int main()
{
Test::mutex.lock();
Test::mutex.unlock();
return 0;
}
При его компиляции выходит такая ошибка:
/tmp/cchDdN5m.o: In function `main':
main.cpp:(.text+0x84): undefined reference to `Test::mutex'
main.cpp:(.text+0x90): undefined reference to `Test::mutex'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
Есл убрать static и сделать std::mutex глобальной переменной все работает корректно. Комплирую так:
g++ main.cpp -lpthread
Как можно исправить данную проблему, не убирая static?