`
haoningabc
  • 浏览: 1477832 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

emscripten asm.js的helloworld

阅读更多
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模拟器是否可以?




分享到:
评论

相关推荐

    asm.js FFT module

    3. **兼容性**:配合 Emscripten 等工具,可以编译 C/C++ 代码为 asm.js,利用现有库。 4. **可嵌入性**:与其他 JavaScript 应用集成简单,无需额外的运行环境。 然而,asm.js 也有其局限性,如代码可读性较差,...

    emscripten-1.38.30

    接着,Emscripten的后端将这个IR转换为JavaScript,尤其是转换为一种名为Asm.js的优化JavaScript子集。Asm.js是一种高效的JavaScript格式,它可以被现代浏览器快速解析和执行。从1.38.30版本开始,Emscripten还支持...

    babel-plugin-asm-js:将JavaScript + Flow编译为asm.js(WIP)

    仍然是JavaScript的子集,但更适合手写(这样您就不需要使用C / C ++-&gt; Emscripten-&gt; asm.js进行数学运算) 工作正在进行中。目前支持: ES6 import并命名export 自动var , let , const提取和转换自动功能布局...

    emscripten-1.38.31.tar.gz

    这些库在Web环境中通常以“asm.js”或WebAssembly的形式存在。 6. **命令行工具**:Emscripten提供了`emcc`和`em++`命令行工具,它们分别用于C和C++的编译。这些工具集成了预处理、编译、链接和优化过程。 7. **...

    asm.js-pack:asm.js 打包工具

    通过Emscripten,一个LLVM到JavaScript的编译器,开发者可以将C++程序编译为asm.js代码。Emscripten允许C++开发者利用他们的现有代码库,并在Web上实现高性能。Emscripten编译的asm.js代码通常包含大量的数学运算和...

    JS2-8JSS-ASM.rar_8jss_JS2_mix

    其实“asm.js是由Mozilla提出的一个基于JS的语法标准,主要是为了解决JS引擎的执行效率问题,尤其是使用Emscripten从C/C++语言编译成JS的程序的效率,”。从理论上讲,只要按照ASM.js规范的要求来写JS,其运行的时候...

    asm.js使用示例代码

    asm.js是一个底层、格外为 JavaScript 子集优化的编译器。这是 Mozilla 研究项目,类似 Emscripten, Mandreel, 和 LLJS,这个示例让我们简单学习一下asm.js的使用

    CSharpAsmjs:C#Hello World示例到Asm.js

    CSharpAsmjs C#Hello World示例到Asm.js 我试图写一个Hello World! 可以转换为Asm.js的示例应用程序首先使用C#Native( )转换为C ++,然后使用Emscripten( )转换为JavaScript。障碍: EMscripten无法编译C#...

    emsdk 1.39.8 下载包

    Emscripten SDK 1.39.8 下载包,qt5.15 wasm 项目编译包 配合博客看吧 https://blog.csdn.net/zhouwu_a/article/details/108638698

    App:使用 asm.js 的并行在线分布式计算

    ASM.js 是一种优化的 JavaScript 子集,专为高性能计算设计,它允许浏览器中的代码运行速度接近原生代码。在本主题中,我们将深入探讨如何利用 ASM.js 实现并行在线分布式计算,尤其是在 App 开发中的应用。 首先,...

    emscripten-1.38.13

    Emscripten是一款强大的开源编译器,它能够将C/C++代码转换为JavaScript,从而在Web环境中运行。这个“emscripten-1.38.13”压缩包是Emscripten的一个特定版本,它包含了用于编译OpenCV等项目所需的所有组件和工具。...

    emscripten-fastcomp.7z

    Low Level Virtual Machine (LLVM) ================================ This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, ...

    OpenCV.js中文教程

    OpenCV.js 是由 OpenCV 主库经过 Emscripten 编译,转化为可以在浏览器中运行的 JavaScript 代码,支持 asm.js 和 WebAssembly,从而达到接近原生执行速度的效果。 1. **OpenCV.js 简介** OpenCV.js 的诞生源于 ...

    OSTC2015-Mozilla张频_Bring Native to the Web_ an introduction to Emscripten and asm

    主题:Bring Native to the Web: an introduction to Emscripten and asm.js 演讲人:张频,谋智网络(Mozilla)软件经理 演讲介绍:Emscripten 是 Mozilla 推出的一个开源编译工具,它能将 C/C++ 程序编译为 ...

    wasm-raytracer:JavaScript、asm.js、WebAssembly 和 GLSL 中简单光线追踪器的性能比较

    因此,我使用 Emscripten 将 C++ 光线追踪器编译为 asm.js 和 WebAssembly,同时在 JavaScript 和 C++ 中实现了一个简单的,并具有类似的代码结构。 为了好玩,我还将代码翻译成 GLSL,并利用 WebGL 来利用 GPU ...

    ffmpeg.js:FFmpeg与Emscripten的端口

    生成针对浏览器内部使用进行了优化:最小的大小可加快加载速度,asm.js,性能调整等。尽管它们也可在Node中使用。 建物 当前可用的版本(将来可能会添加其他版本): ffmpeg-webm.js -WebM编码(VP8和Opus编码器,...

    Emscripten,emsdk.zip

    Emscripten是一款开源的LLVM到JavaScript的编译器,它允许开发者将C和C++代码转换为可以在Web浏览器中运行的JavaScript代码。Emscripten的核心是LLVM前端,它将C/C++源代码转化为中间表示(IR),然后通过LLVM后端将其...

    xmonarch:asm.js和WebAssembly中的Cryptonight哈希函数

    xmonarch:asm.js和WebAssembly中的Cryptonight哈希函数

    ammo.js:使用Emscripten将Bullet物理引擎直接移植到JavaScript

    ammo.js演示版概述示例代码可让您对API有所了解: 与进行交互 ammo.js是使用Emscripten将直接移植到JavaScript的端口。 源代码直接翻译为JavaScript,无需人工重写,因此功能应与原始Bullet相同。 注意:ammo.js刚刚...

    opencvjs, OpenCV模块通过Emscripten编译到 JS.zip

    opencvjs, OpenCV模块通过Emscripten编译到 JS opencvjs( 注意:这是一个正在进行的工作,尽管编译了代码,但是方法没有正确公开)OpenCV模块通过Emscripten编译到 JS所有模块都使用 -02个emscripten优化级别构建。...

Global site tag (gtag.js) - Google Analytics