c gcc erlang erlang-nif

c - Prueba Erlang NIF-OS X Lion



gcc erlang-nif (3)

Intente utilizar estos indicadores al compilar su nif en lugar de -shared

-bundle -flat_namespace -undefined suppress

Estoy intentando compilar la prueba NIF de Erlang ( http://www.erlang.org/doc/man/erl_nif.html ) en Mac OS X Lion. No puedo hacer que compile. ¿Me falta una bandera del compilador? Aquí está el error que recibo:

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

También probé esto con -m32 pero dice que tampoco hay arquitectura i386.

¡Gracias!


Parece que su problema no es la arquitectura, sino el símbolo indefinido _enif_make_string , lo que significa que tiene que vincularse con su biblioteca enif , sea lo que sea, utilizando la opción -l . Además, ha pasado mucho tiempo desde que construí una biblioteca compartida para OS X, pero creo que el indicador correcto para usar es -dynamiclib y no- -shared , y no es necesario tener un espacio después de -I .


para Erlang de 64 bits, lo siguiente funciona para mí:

gcc -undefined dynamic_lookup -dynamiclib niftest.c -o niftest.so / -I /usr/local/Cellar/erlang/R14B02/lib/erlang/usr/include