作者:诚实的愛是最棒的_977_415_874 | 来源:互联网 | 2023-09-24 18:40
我正在尝试在MacOSXLion上从Erlang(http:www.erlang.orgdocmanerl_nif.html)编译NIF测试。我无法编译。我错过了编译器标志吗?这是
我正在尝试在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
,这意味着您必须使用-l
选项链接您的enif
库,无论它是什么。 此外,自从我为OS X构建共享库以来已经很长时间了,但我认为使用的正确标志是-dynamiclib
而不是-shared
,并且在-I
之后不必有空格。
在编译你的nif而不是-shared时尝试使用这些标志
需要了解更多c/c++开发分享Erlang NIF测试 – OS X Lion,也可以关注C/ C++技术分享栏目—编程笔记
-bundle -flat_namespace -undefined suppress
以上就是c/c++开发分享Erlang NIF测试 – OS X Lion相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(编程笔记)。