Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 583

配合英特尔® XDK 使用 Emscripten* 编译器

$
0
0

简介

Emscripten 可将 C 和 C++ 编译成 Javascript。 这样有助于借助 HTML5 运行 C 和 C++ 程序。 英特尔 XDK 是一款 HTML5 交叉平台开发工具,可帮助您轻松、快速地将应用推向市场。 有了 Emscripten 编译器和英特尔 XDK,您现在又多了一种使用 C 和 C++ (作为应用一部分)发布应用的选择。

 

推动因素

C 和 C++ 是使用范围最广、用户了解最多、最为活跃的编程语言。 基于 C 和 C++ 的程序和资源库还在不断的创建和维护。 由于具备齐全的工具、技巧、文档、编程实践和专业开发知识,许多应用开发人员均选择 C 和 C++ 语言创建编程逻辑。

人们常常希望使用 web 用户代理运行 C 和 C++ 程序。因此,自 1995 年起包括 Netscape Plugin API (NPAPI) 在内的许多知名项目相继开发,此外,自 2010 年起,Native Clients (NaCL/PnaCL) 也开始面市。 

Emscripten 则与众不同。 它利用 LLVM 编译器前端基础设施并输出至 Javascript 的子集(名为 ASM.js)。 这带来的直接结果就是,C 和 C++ 程序经过编译后可在 Javascript 上运行,无需任何插件。

英特尔® XDK 是一款 HTML5 交叉平台开发工具,可提供简化后的工作流支持开发人员轻松设计、调试、构建应用,并将其部署至应用商店。 

 

谁可以使用 Emscripten 将 C++ 应用编译至 JS,并从中获益?

 

1.  有兴趣积累更大客户群的 C++ 库和应用开发人员。

那些希望将编译后的软件分发给 HTML5 开发人员的开发人员能够通过利用 Emscripten 构建基础设施来积累受众。

 

由于 JavaScript(JS) 能够在浏览器和本地移动应用中的 webview 中以本机方式运行,因此 JS 应用广泛分布于多种操作系统(在浏览器中运行)中。  使用英特尔 XDK,您可以设计适用于 Google* Android 操作系统、Google* Chrome 操作系统和 Apple iOS 的应用,并通过 Android* Play 应用商店和 Apple* Store 应用商店发布应用。

 

作为 HTML5 生态系统(级联样式表 (CSS))的一部分,JS 拥有丰富的响应式用户界面,支持您为应用制作‘皮肤’,从而为目标受众量身打造独特的观感。

 

开发人员可以通过 emscripten 生成的 JS 汇编文件选择(是否)最迎合开源风格的分发模式。 

 

英特尔 XDK 可帮助您轻松、快速地将应用推向市场。

 

2. 有兴趣访问目前仅 C 或 C++ 库提供的特性的 JS 开发人员。

Emscripten 通过 'embind'工具为 JS 和 C++ 函数提供丰富的双向通信。 JS 开发人员能够非常直观地通过 JS 访问 C 和 C++ 函数,以及 C++ 类。

 

Emscripten 工具链的优势

* 兼容 C 和 C++
emscripten 依赖 Clang 前端和 libc++,因此能够兼容 C++11 和 C++14 标准以及 C99 标准。 [注: 使用 Raw 指示器可能存在部分局限性]

* 与 Javascript 和 DOM 交互

embind 工具链有助于 JS 和 C++ 轻松实现互操作。 能够为 JS 提供可从 C++ 调用的类,以及可从 JS 调用的 C++ 类。

* 调试

包括 Chrome DevTool 和 Firefox 在内的 JS 开发人员工具支持源映射。

emcc 可生成 .map 文件以有效、直观地进行调试。

 

注意事项

JS 仍然为单线程。 多线程结构可以工作,但应用需以单线程应用的形式运行。

支持 SIMD.js 意味着可能会关闭本地执行。 英特尔 Crosswalk 提供基于设备的 SIMD 支持。   仿真器尚不支持 SIMD。 

 

emscripten 入门

 

使用预构建的 Javascript 库

要想从 Emscripten 获益,最简单方法是将预构建的库添加到您的项目中。 常用的示例有 ocrad(Javascript 格式的OCR)、Javascript 格式的 SQLite,以及物理引擎 ammo.jsbox2d.js

像往常一样将 HTML5 项目移植到英特尔 XDK。请参考本篇简介,以将现有 HTML5 项目移植到英特尔 XDK

 

安装最新版 Emscripten

请注意,以下说明与英特尔 XDK 安装无关。

请按照 Emscripten 网站 https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html提供的说明下载并安装最新版 Emscripten 工具链。

 

验证安装是否正确

假如安装正确,应向您提供了 emcc。 在命令提示窗口中输入以下内容,以验证 emcc 安装:

>emcc -v

 

构建 hello world 程序

在最喜欢的编辑器中通过以下内容创建并保存名为 hello.cpp 的文件。

#include <stdio.h>
int main() {
   printf("Hello World!");
   return 0;
}

您可以使用任何编辑器编辑 C/C++ 文件,但英特尔 XDK 内置了能够编辑 C/C++ 文件的编辑器

 

编译并链接至 JS

> emcc hello.cpp -o index.js

将该 js 脚本包含在您的 html 项目中。
以下是关于内容 index.html 文件的示例

<!DOCTYPE HTML><head><title>emcc Hello World</title></head><body><script src="index.js"></script></body>

将项目移植到英特尔 XDK,并通过仿真器或编辑器中的 Live Layout 浏览器打开该项目。

请注意,控制台不仅显示消息,还会显示 emcc 添加的平均准备时间。

 

性能优化

最好使用默认优化级别 (-O0) 验证功能是否正确。 该优化级别可以为您提供更好的调试体验。 功能验证完成后,可以使用更高的优化级别(-O2 或 -O3)获得更高性能。 O3 支持矢量化。

参考: https://kripken.github.io/emscripten-site/docs/optimizing/Optimizing-Code.html

 

在英特尔 XDK 中移植、调试和构建 HTML5 应用

您可以在英特尔 XDK 中移植、构建和调试 emscripten 生成的 HTML5 应用,其方式与 HTML5 应用相同。 您可以根据需要纳入 Cordova API 调用。 请参阅英特尔 XDK 入门教程,了解更多信息。 


Viewing all articles
Browse latest Browse all 583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>