Я использую 64-разрядный gcc-4.8.2 для создания 32-битной цели, а моя машина - 64-разрядная. Я использую функции параллелизма C++ 11, такие как thread, mutex, conditiona_variables и т. Д.undefined ссылка на '__gthrw ___ pthread_key_create (unsigned int *, void (*) (void *))
Компонент дал вышеприведенное сообщение об ошибке при попытке связать исполняемый файл. libMyLib также является частью проекта.
libMyLib.so: undefined reference to '__gthrw___pthread_key_create(unsigned int*, void (*)(void*))
nm libMyLib.so | Grep pthread_key_create показывает:
U _ZL28__gthrw___pthread_key_createPjPFvPvE
w [email protected]@GLIBC_2.0
где символ 'ghtrw___pthread_key_create' от? Я попытался добавить '-lpthread (-pthread)' как флаг компилятора, но это не помогает.
Дополнительная информация. nm libMyLib.so | Grep показывает потоковой другие символы, такие, как определено _ZL20__gthread_mutex_lockP15pthread_mutex_t
'Я пытался добавить '-lpthread' в качестве флага компилятора' - вы знаете о [правильной последовательности параметров] (http://stackoverflow.com/questions/18388710/what-is-the-proper-sequence-of- опции-для-GCC-на-значение-в-этой последовательности)? – Gluttton
Вместо этого используйте флаг компилятора '-pthread'. –
Добавление '-pthread' не устраняет мою проблему. И все же вопрос, откуда приходит пропавший символ? – user11869