Erlang NIF Test - OS X Lion
Я пытаюсь скомпилировать тест NIF из Erlang ( http://www.erlang.org/doc/man/erl_nif.html) на Mac OS X Lion. Я не могу заставить его скомпилировать. Я пропускаю флаг компилятора? Вот ошибка, которую я получаю:
Computer:~ me $ gcc -fPIC -shared -o niftest.so niftest.c -I /usr/local/Cellar/erlang/R14B02/lib/erlang/usr/include/
Undefined symbols for architecture x86_64:
"_enif_make_string", referenced from:
_hello in ccXfh0oG.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Я также попробовал это с -m32
но там написано, что архитектуры i386 тоже нет.
Спасибо!
3 ответа
Для 64-битного Erlang у меня работает следующее:
gcc -undefined dynamic_lookup -dynamiclib niftest.c -o niftest.so \
-I /usr/local/Cellar/erlang/R14B02/lib/erlang/usr/include
Похоже, ваша проблема не в архитектуре, а в неопределенном символе _enif_make_string
Это означает, что вы должны связаться с вашим enif
библиотека, что бы это ни было, используя -l
вариант. Кроме того, прошло много времени с тех пор, как я создал общую библиотеку для OS X, но я думаю, что правильный флаг для использования -dynamiclib
и не -shared
и вам не нужно иметь место после -I
,
Попробуйте использовать эти флаги при компиляции nif вместо -shared
-bundle -flat_namespace -undefined suppress