Как установить флаги gcc в Emscripten

Я компилирую с помощью следующей команды:

gcc -Wall -march=native -O3 -ffast-math -I/usr/local/include -I/usr/local/include -o waon main.o notes.o midi.o analyse.o fft.o hc.o snd.o -L/usr/local/lib -L/usr/local/lib -lfftw3 -L/usr/local/lib -lsndfile -lm

Я сейчас хотел бы скомпилировать с Emscripten. Как мне конвертировать выше gcc командовать в emcc команда?

1 ответ

Команда, которую вы описали в этом вопросе, является компоновкой, а не компиляцией. Однако в целом вы должны просто иметь возможность заменить gcc с emcc и это будет правильно делать. В этом случае вам потребуется заменить не только эту команду связывания, но и команды, используемые для компиляции исходников в файлы.o.

Вероятно, было бы неплохо вынуть -march вариант.

Похоже, ваш проект использует libsndfile и FFTW. Вероятно, вам нужно будет скомпилировать эти библиотеки самостоятельно, используя emscripten. Оба они используют автоинструменты, поэтому, если повезет, вы можете скомпилировать их с помощью emscripten, просто добавив следующие параметры при запуске скрипта configure:

./configure --prefix=$HOME/emscripten-libs CC=emcc
make && make install

Затем, когда вы связываете свою программу, вы можете указать -L$HOME/emscripten-libs/lib вместо -L/usr/local/lib,

Изучите информацию о загрузке и настройке emsdk на вашем компьютере.

Скачать инструкцию emsdk

Следующая интересная ссылка:

Инструкция emcc или em++ https://emscripten.org/docs/tools_reference/emcc.html

Когда вы настраиваете emcc в командной строке, вы можете увидеть этот проект (я делаю окончательный вид emcc на основе скрипта python runner.py и т. Д.):

c-cpp-to-javascript

Основные и полезные примеры:

Довольно аналог с gcc:

Аргументы:

-lGL for openGL

-s TOTAL_MEMORY=512MB --memory-init-file 1 Memory staff

--preload-file folderWithImages/--use-preload-plugins If you use assets

-I forInclude/someheader.h

-L libraryFolder/someLib.lib

-std=c11

Простой запуск:

./emcc -O2 a.cpp -o a.js

или

./emcc -O2 a.cpp -o a.html

Ссылки:

./emcc -O2 a.cpp -o a.bc./emcc -O2 b.cpp -o b.bc./emcc -O2 a.bc b.bc -o project.js

Или:

  • получить JS

    emcc -s WASM=1 myAdds.a myLib.a source1.c source2.cpp -o build.js

  • получить html

    emcc -s WASM=1 myAdds.a myLib.a source1.c source2.cpp -o build.html

Свяжите вместе файлы битового кода:

emcc project.bc libstuff.bc -o allproject.bc

Скомпилировать комбинированный битовый код в HTML

emcc allproject.bc -o final.html

Важная заметка:

Вы не можете взять существующую библиотеку.a и преобразовать ее. Вы должны собрать библиотеку сemcc также.

Другие вопросы по тегам