Erlang Nif测试-OS X狮子[英] Erlang NIF Test -- OS X Lion

本文是小编为大家收集整理的关于Erlang Nif测试-OS X狮子的处理方法,想解了Erlang Nif测试-OS X狮子的问题怎么解决?Erlang Nif测试-OS X狮子问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在尝试从erlang( http://http://www. Mac OS X Lion上的erlang.org/doc/man/erl_nif.html ).我无法编译.我想念编译器标志吗?这是我遇到的错误:

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,这意味着您必须使用-l选项与enif库链接.另外,自从我为OS X构建共享库以来已经很长时间了,但是我认为使用的正确标志是-dynamiclib而不是-shared,而且您不必在-I之后拥有一个空间.

其他推荐答案

在编译NIF而不是-shared

时尝试使用这些标志
-bundle -flat_namespace -undefined suppress

本文地址:https://www.itbaoku.cn/post/359417.html