我使用以下命令编译:
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
命令?
答案 0 :(得分:2)
您在问题中描述的命令是链接而不是编译。但是一般情况下,您应该只能将gcc
替换为emcc
,它会做正确的事情。在这种情况下,您不仅需要替换此链接命令,还需要替换用于将源代码编译为.o文件的命令。
取出-march
选项可能是个好主意。
看起来您的项目正在使用libsndfile和FFTW。您可能需要使用emscripten自己编译这些库。他们两个都使用自动工具,所以运气好,只需在运行配置脚本时添加以下参数,就可以使用emscripten编译它们:
./configure --prefix=$HOME/emscripten-libs CC=emcc
make && make install
然后,当您关联程序时,您可以指定-L$HOME/emscripten-libs/lib
而不是-L/usr/local/lib
。
答案 1 :(得分:0)
在计算机上进行有关emsdk下载和设置的研究。
下一个兴趣链接是:
emcc or em++ instruction https://emscripten.org/docs/tools_reference/emcc.html
在命令行中设置emcc时,您可以看到此项目(我基于python脚本Runner.py等使emcc最终外观):
基本有用的示例:
与gcc十分相似:
Args:
-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
或:
emcc -s WASM=1 myAdds.a myLib.a source1.c source2.cpp -o build.js
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
构建lib。