Не удается получить GMP-библиотеку, скомпилированную с помощью Emscripten (2)

Я немного новичок. Моя система OS X.

Я получил emscripten, работающий с SDL2, и это здорово. Я компилирую командой:

./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

из командной строки в каталоге emscripten.

Теперь я хочу, чтобы GMP работал с ним. У меня есть заголовочные файлы libgmp.a и libgmp.10.dylib на моем компьютере, но я не знаю, куда их поместить для emscripten. Я также сделал gmp.js с помощью emscripten, опять же не зная, куда его поместить.

Всякий раз, когда я пытаюсь скомпилировать, я получаю это:

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

Где я должен разместить заголовочные файлы и какую библиотеку я должен поставить? У меня нет проблем с компиляцией libgmp в Xcode, но я хочу использовать emscripten.


person Elliot MacNeille    schedule 20.04.2015    source источник
comment
Я разобрался с заголовочным файлом... Я поместил все gmp в ...emscripten/incoming/system/local/include. Я до сих пор не знаю, куда деть саму библиотеку. ошибка, которую я получаю сейчас: предупреждение: неразрешенный символ: предупреждение: неразрешенный символ: __gmpz_init предупреждение: неразрешенный символ: __gmpz_abs предупреждение: неразрешенный символ: __gmpz_add предупреждение: неразрешенный символ: __gmpz_clear предупреждение: неразрешенный символ: __gmpz_set_str   -  person Elliot MacNeille    schedule 21.04.2015


Ответы (1)


Вы должны сообщить компилятору, где заголовки библиотек используют параметр командной строки -I, а затем, какие библиотеки нужно связать, используя параметр командной строки -l. Что-то вроде:

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

Это не специфично для emscripten: так обычно работают компиляторы C/C++, такие как GCC и LLVM. Вам не нужно было делать это для SDL, потому что это особенное!

Однако вы не сможете просто использовать libgmp.a или libgmp.10.dylib! Они нацелены на x86 (или, по крайней мере, на вашем Mac), и вы хотите, чтобы они были биткодом LLVM или JavaScript. Похоже, что нет легкодоступного порта gmp, поэтому проще всего, вероятно, создайте его самостоятельно и свяжите со своим приложением.

gmp обычно строится со встроенной сборкой, но вы можете отключить это в своей сборке. Может быть полезно проверить, как это было сделано для PNaCl. внутри naclports и делать то же самое для своей сборки.

person JF Bastien    schedule 21.04.2015
comment
под -я имею в виду -L - person Elliot MacNeille; 19.07.2016