7
votes

Erlang Nif Test - OS X Lion

J'essaie de compiler le test NIF d'Erlang ( http: // www. erlang.org/doc/man/erl_nif.html ) sur Mac OS X Lion. Je ne peux pas l'obtenir pour compiler. Est-ce que je manque un drapeau de compilateur? Voici l'erreur que je reçois: xxx

J'ai également essayé cela avec -m32 mais il n'y a pas d'architecture I386 non plus.

Merci !


0 commentaires

3 Réponses :


2
votes

Il semble que votre problème ne soit pas une architecture mais un symbole non défini _enif_make_string , ce qui signifie que vous devez créer un lien avec votre bibliothèque ENIF , quoi que ce soit, quoi que ce soit, quoi qu'il soit, en utilisant -l option. En outre, cela fait longtemps que j'ai construit une bibliothèque partagée pour OS X, mais je pense que le drapeau droit à utiliser est -dynamiclib et non -shared , et vous Ne pas avoir d'espace après -i .


2 commentaires

Si j'ai la directive #include et le drapeau -i, ne devrait-il pas suffire pour référencer le fichier inclus? Découvrez le lien. Merci!


@TravisPowell: Non, #include suffit uniquement pour la compilation mais pas pour la liaison. Votre bogue est en liaison, voir ld: sym ... . C'est un bug de liaison.



1
votes

Essayez d'utiliser ces indicateurs lors de la compilation de votre NIF au lieu de -shared xxx


0 commentaires

13
votes

Pour Erlang 64 bits, les œuvres suivantes pour moi:

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


2 commentaires

Recherche dynamique c'est! Merci :)


Merci beaucoup pour cette réponse :)