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: J'ai également essayé cela avec Merci ! p> p> -m32 code> mais il n'y a pas d'architecture I386 non plus. P>
3 Réponses :
Il semble que votre problème ne soit pas une architecture mais un symbole non défini _enif_make_string code>, ce qui signifie que vous devez créer un lien avec votre bibliothèque
ENIF code>, quoi que ce soit, quoi que ce soit, quoi qu'il soit, en utilisant
-l code> 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 code> et non
-shared code>, et vous Ne pas avoir d'espace après
-i code>. p>
Si j'ai la directive code> #include code> et le drapeau -i, ne devrait-il pas suffire pour référencer le fichier inclus? Découvrez le lien. Merci!
@TravisPowell: Non, #include code> suffit uniquement pour la compilation mais pas pour la liaison. Votre bogue est en liaison, voir
ld: sym ... code>. C'est un bug de liaison.
Essayez d'utiliser ces indicateurs lors de la compilation de votre NIF au lieu de -shared
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
Recherche dynamique c'est! Merci :)
Merci beaucoup pour cette réponse :)