#c #gcc #compiler-errors #emscripten #emcc
Вопрос:
У меня есть файл под названием «speed.c», который я хочу использовать для веб-программы
Это работает:
gcc speed.c -lcrypto -lssl
Но это не так:
emcc speed.c -v -lcrypto -lssl -s EXPORTED_FUNCTIONS=_speed,_main -o speed.wasm
Функция в speed.c называется «скорость».
На веб-сайте Emscripten говорится, что компилятор такой же, как и любой другой, поэтому этот меня смущает.
Какая-нибудь помощь? Спасибо!
Ответ №1:
Emscripten не может использовать библиотеки вашей системы. Это связано с тем, что они являются двоичными файлами, скомпилированными для вашей собственной машины (вероятно, 64-разрядной Linux), в то время emcc
как компилируются в WebAssembly/JavaScript. Как правило, вы можете видеть, на какую архитектуру нацелен двоичный файл file
:
$ file `realpath /usr/lib/libssl.so`
Таким образом, вам нужно будет сначала скомпилировать OpenSSL с emcc
помощью . Я сам этого не делал, но я верю, что это возможно. Вы могли бы проверить эту проблему на github.
Как только вы это сделаете, у вас должно быть два имени файлов libssl.a
и libcrypto.a
. Затем вы можете скомпилировать свой собственный проект следующим образом:
$ SSL=/path/to/openssl
$ emcc speed.c $SSL/libssl.a $SSL/libcrypto.a -I $SSL/include/ # etc.
Взгляните на страницу создания проекта, если вы еще этого не сделали.