如何在Emscripten中设置gcc标志

时间:2016-05-24 19:28:49

标签: 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命令?

2 个答案:

答案 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下载和设置的研究。

Download emsdk instruction

下一个兴趣链接是:

emcc or em++ instruction https://emscripten.org/docs/tools_reference/emcc.html

在命令行中设置emcc时,您可以看到此项目(我基于python脚本Runner.py等使emcc最终外观):

c-cpp-to-javascript

基本有用的示例:

与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

或:

  • 获得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构建lib。