2015-04-20 1 views
1

Je suis un peu un newb. Mon système est OSX.Impossible d'obtenir la compilation GMP avec Emscripten (2)

J'ai eu des emscripten fonctionnant avec SDL2 qui est génial. Je compile avec la commande:

./emcc /Users/elliotmacneille/Projects/the\ simplifier/the\ simplifier/main.cpp -s USE_SDL=2 -s LEGACY_GL_EMULATION=1 -std=c++11 -o money99.html 

à partir de la ligne de commande dans le répertoire emscripten. Maintenant, je souhaite que GMP fonctionne avec. J'ai les fichiers d'en-tête, libgmp.a, et libgmp.10.dylib sur mon ordinateur, mais je ne sais pas où les mettre pour emscripten. J'ai également fait un gmp.js en utilisant emscripten, encore une fois je ne sais pas où le mettre.

Chaque fois que je tente de compiler je reçois ceci:

"fatal error: 
     'gmp.h' file not found 
#include <gmp.h> 
     ^
1 error generated." 

Où dois-je mettre les fichiers d'en-tête et quelle bibliothèque dois-je mettre où? Je n'ai aucun problème à compiler libgmp dans Xcode, mais je veux utiliser emscripten.

+0

J'ai trouvé le fichier d'en-tête ... Je les ai mis tous dans ... emscripten/incoming/system/local/include. Je ne sais toujours pas où mettre la bibliothèque elle-même. l'erreur que je reçois est maintenant: avertissement: symbole non résolu: avertissement: symbole non résolu: __gmpz_init avertissement: symbole non résolu: __gmpz_abs avertissement: symbole non résolu: __gmpz_add avertissement: symbole non résolu: __gmpz_clear avertissement: symbole non résolu: __gmpz_set_str –

Répondre

3

Vous devez indiquer au compilateur où les en-têtes de bibliothèque utilisent l'option de ligne de commande -I, puis les bibliothèques à lier à l'aide de l'option de ligne de commande -l. Quelque chose comme:

emcc myfile.cpp -o myoutput.html -Lpath/to/gmp/include -lgmp 

Ce n'est pas spécifique à emscripten: il est comment C/C++ compilateurs comme GCC et LLVM travaillent habituellement. Vous n'avez pas eu à le faire pour SDL car it's special!

Vous ne serez pas en mesure d'utiliser libgmp.a ou libgmp.10.dylib si! Ceux-ci ciblent x86 (ou du moins ils le font sur votre Mac), et vous voulez qu'ils soient soit bitcode LLVM ou JavaScript. Il ne semble pas y avoir un port gmp facilement disponible, donc le plus facile est probablement build it yourself and link it into your application. Gmp se construit généralement avec l'assemblage en ligne, mais vous pouvez le désactiver à partir de sa construction. Il peut être utile de vérifier how this was done for PNaCl inside of naclports, et faire la même chose pour votre propre construction.

+0

par " -Je "veux-tu dire" -L " –