欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

emscripten asm.js的helloworld 博客分类: jslinuxjavascriptasm.jsemscripten cjavascriptasm.js 

程序员文章站 2024-03-06 08:23:01
...
mac下安装:
brew install SDL2 SDL2_image emscripten 

centos7需要先装gcc8


参考https://blog.cles.jp/item/9428



git clone https://github.com/emscripten-core/emsdk.git

加压emsdk-portable.tar.gz
yum install -y epel-release
yum install -y cmake3 nodejs npm java-1.8.0-openjdk java-1.8.0-openjdk-devel

ln -s /usr/bin/cmake3 /usr/local/bin/cmake

需要用cmake3 ,卸载cmake2
先cmake --version
看下版本

./emsdk install latest
./emsdk activate latest

./emsdk install clang-incoming-64bit
./emsdk activate clang-incoming-64bit

source emsdk_env.sh

注意:clang-incoming-64bit必须有,否则版本对应不上,很多编译错误

参考
中文
asm.js 和 Emscripten 入门教程
http://www.ruanyifeng.com/blog/2017/09/asmjs_emscripten.html
英文
https://kripken.github.io/mloc_emscripten_talk/cppcon.html#/
faq
http://kripken.github.io/emscripten-site/docs/getting_started/FAQ.html

#include <emscripten.h>

extern "C" {
  double SquareVal(double val) {
    return val * val;
  }
}

int main() {
  EM_ASM({
    SquareVal = Module.cwrap('SquareVal', 'number', ['number']);
    var x = 12.5;
    alert('Computing: ' + x + ' * ' + x + ' = ' + SquareVal(x));
  });
}



emcc -s EXPORTED_FUNCTIONS="['_SquareVal', '_main']" -s EXTRA_EXPORTED_RUNTIME_METHODS="['cwrap']"  example4.cc -o example4.html

生成example4.js 和example4.html
python -m SimpleHTTPServer 8080


#####################centos7下的安装
centos7.6的gcc是 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)



新版本可能有问题,找个老版本安装一下
如果有的 下载错误,就去zips目录下,wget下载
编译clang出错有可能是内存不够,1G的vm肯定不行啊。
具体操作:

yum install cmake -y
git clone https://github.com/juj/emsdk
./emsdk list --old
./emsdk install sdk-tag-1.36.2-64bit

./emsdk activate sdk-tag-1.36.2-64bit
source ./emsdk_env.sh



[root@meituan7 emsdk]# gcc --version
gcc (GCC) 4.9.2 20150212 (Red Hat 4.9.2-6)
[root@meituan7 emsdk]# emcc
WARNING:root:no input files
为安装成功


#############

Invalid verification text

https://vfsync.org/vm.html?login=1
frenchleaf
haoning

###########emscripten的教程 ######
helloworld:
http://www.ruanyifeng.com/blog/2017/09/asmjs_emscripten.html
和c互相调用的交互
https://github.com/3dgen/cppwasm-book

遗留问题:
1.sdl怎么用? https://lyceum-allotments.github.io/2016/06/emscripten-and-sdl-2-tutorial-part-1/
2.必须是干净的c的代码么,如果是系统依赖的怎么办
3.mame模拟器是否可以?