Когда я скомпилирую пример взаимодействия между C и erlang следующей командой:
gcc -o fac -I / usr / local / lib / erlang / lib / erl_interface-3.5.9 / include\ -L / usr / local / lib / erlang / lib / erl_interface-3.5.9 / lib fac.c -lerl_interface -lei
Моя система - Ubuntu.Я получил следующие ошибки:
/ usr / lib / libei.a (ei_pthreads.o): в функции __erl_errno_place': (.text+0x4c): undefined reference to pthread_once '/usr/lib/libei.a(ei_pthreads.o): вфункция __erl_errno_place': (.text+0x7a): undefined reference to pthread_getspecific '/usr/lib/libei.a(ei_pthreads.o): в функции __erl_errno_place': (.text+0xa2): undefined reference to pthread_setspecific' /usr/lib/libei.a(ei_pthreads.o): в функции __erl_errno_place': (.text+0xb4): undefined reference to pthread_getspecific '/ usr/lib/libei.a(ei_pthreads.o): в функции erl_errno_key_alloc': (.text+0x136): undefined reference to pthread_key_create '/usr/lib/libei.a(ei_pthreads.o): в функции ei_m_trylock': (.text+0x189): undefined reference to pthread_mutex_trylock' collect2: ld вернул 1 состояние выхода
__erl_errno_place': (.text+0x4c): undefined reference to
__erl_errno_place': (.text+0x7a): undefined reference to
__erl_errno_place': (.text+0xa2): undefined reference to
__erl_errno_place': (.text+0xb4): undefined reference to
erl_errno_key_alloc': (.text+0x136): undefined reference to
ei_m_trylock': (.text+0x189): undefined reference to
Есть предложения?
Вам необходимо связать pthread библиотеку. Попробуйте: gcc -o fac -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include -L/usr/local/lib/erlang/lib/erl_interface-3.5.9/lib fac.c -lerl_interface -lei -lpthread Надеюсь, это поможет!
pthread
gcc -o fac -I/usr/local/lib/erlang/lib/erl_interface-3.5.9/include -L/usr/local/lib/erlang/lib/erl_interface-3.5.9/lib fac.c -lerl_interface -lei -lpthread
Пожалуйста, попробуйте, если указание параметра командной строки -pthread (или если что-то изменилось -lpthread) решает проблему.
-pthread
-lpthread