C语言 Erlang NIF Test -- OS X Lion



我试图在Mac OS X Lion上从Erlang (http://www.erlang.org/doc/man/erl_nif.html)编译NIF测试。我无法让它编译。我错过了编译器标志吗?下面是我得到的错误:

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架构。

谢谢!

对于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

相关内容

  • 没有找到相关文章

最新更新