英语法语西班牙语

Ad


OnWorks 网站图标

emcc - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 emcc

这是 emcc 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


emcc - Emscripten 编译器前端

商品描述


emcc [选项] 文件...

桥梁 正常 海湾合作委员会/克++ 选项 工作, 例:
- 帮帮我 显示此信息

- 版
显示编译器版本信息

附加选项 ,那恭喜你, 改性 or in 电商中心 包括:
-氧气 无优化(默认)

-氧气 简单的优化,包括 asm.js、LLVM -氧气 优化,没有运行时
断言或 C++ 异常捕获(要重新启用 C++ 异常捕获,请使用 -s
DISABLE_EXCEPTION_CATCHING=0 )。 (有关不同选择的影响的详细信息
级别,请参阅 tools/shared.py 和 src/settings.js 中的 apply_opt_level()。)注意:
优化只在编译为 JavaScript 时完成,而不是中间
位码,*除非*您使用 EMCC_OPTIMIZE_NORMALLY=1 构建(不推荐,除非
你知道你在做什么!)

-氧气 As -氧气, 加上 relooper (loop recreation), LLVM -氧气 优化,和

-s ALIASING_FUNCTION_POINTERS=1

-氧气 As -氧气,加上可能破坏生成的代码的危险优化! 这增加了

-s FORCE_ALIGNED_MEMORY=1 -s 双模式=0 -s PRECISE_I64_MATH=0 - 关闭 1
--llvm-lto 1

完全不推荐这样做。 一个更好的主意是分别尝试这些
某个东西的上放 -氧气 看看有什么用。 请参阅 wiki 和 src/settings.js(对于 -s 选项)
获取更多信息.

-s 选项=值
JavaScript 代码生成选项传递到 emscripten 编译器。 为了
可用选项,请参阅 src/settings.js 请注意,对于列表选项,您
在大多数shell中需要引号,例如

-s RUNTIME_LINKED_LIBS="['liblib.so']"

or

-s "RUNTIME_LINKED_LIBS=['liblib.so']"

(如果没有外部 "s 在其中任何一个,你会得到一个错误)

您还可以指定将从中读取值的文件,例如,

-s DEAD_FUNCTIONS=@/路径/到/文件

内容 /路径/到/文件 将被读取,JSON.parsed 并设置为 DEAD_FUNCTIONS
(所以文件可以包含

["_func1", "func2"]

)。 请注意,路径必须是绝对的,而不是相对的。

-g 使用调试信息。 请注意,您在最后一个编译阶段需要这个
bitcode 转换为 JavaScript,否则我们将在默认情况下将其删除 -氧气 以上。 在
-氧气, 行号将显示在生成的代码中。 在 -氧气 及以上,
优化器会删除这些注释。 然而,这个标志确实具有
禁用导致名称修改或缩小的任何内容(关闭或
注册通行证)。

--类型化数组
0:无类型数组 1:并行类型数组 2:共享(类 C)类型数组
(默认)

--llvm-选项
0:没有 LLVM 优化(默认在 -氧气)1: -氧气 LLVM 优化(默认在
-氧气)2: -氧气 LLVM 优化 3: -氧气 LLVM 优化(默认在 -氧气+)

--llvm-lto
0:无 LLVM LTO(默认在 -氧气 及以下)1:LLVM LTO(默认在 -氧气) 注意:如果
LLVM 优化未运行(请参阅 --llvm-选项),将此设置为 1 无效。

- 关闭
0:没有闭包编译器(默认在 -氧气 及以下) 1:运行闭包编译器。 这个
大大减少了代码大小,并且在某些情况下可能会提高运行速度(尽管
也可能发生相反的情况)。 请注意,运行需要时间,并且可能需要一些
对代码的更改。 这在默认情况下运行 -氧气.

在 asm.js 模式下,闭包只会用在编译后的“shell”代码上
代码(编译后的代码将由自定义 asm.js minifier 处理)。

注意:如果闭包编译器遇到内存不足,请尝试调整 JAVA_HEAP_SIZE
环境(例如,4096GB 到 4m)。

--js-转换
将在生成的代码优化之前调用。 这让你
以某种方式修改 JavaScript,例如添加一些代码或删除一些代码
这些修改将与生成的代码一起优化
适当地。 将使用生成的代码的文件名作为
范围; 修改代码,可以读取原始数据,然后追加到它
或用修改后的数据覆盖它。 被解释为空格分隔
参数列表,例如, "python processor.py" 会导致 python
要运行的脚本。

--pre-js
在生成的代码之前添加内容的文件。 这是*之前*
优化,因此如果运行闭包编译器,它将被正确缩小。

--post-js
在生成的代码之后添加内容的文件这是*before*
优化,因此如果运行闭包编译器,它将被正确缩小。

--嵌入文件
要嵌入到生成的 JavaScript 中的文件。 编译后的代码将能够
访问当前目录中同名的文件。 因此,如果
你做 --嵌入文件 dir/file.dat,那么 (1) dir/file.dat 必须相对于
您运行 emcc 的位置,并且 (2) 您编译的代码将能够通过以下方式找到该文件
读取相同的路径,dir/file.dat。 如果一个目录传到这里,它的整个
内容将被嵌入。

--预加载文件
在异步运行编译代码之前预加载的文件。 除此以外
--嵌入文件,除了此选项仅在生成时相关
HTML(它使用异步二进制 XHR)或将在网页中使用的 JS。 如果
一个目录在这里传递,它的全部内容将被预加载。 预加载文件
存储在 filename.data 中,其中 filename.html 是您正在编译的主文件
到。 要运行您的代码,您将需要 .html 和 .data。

emcc 运行 tools/file_packager.py 来做嵌入式和
预加载的文件。 如果需要,您可以自己运行文件打包程序,请参阅文档
在那个文件里面。 然后你应该把文件打包器的输出放在一个 emcc
--pre-js,以便它在主编译代码之前执行(或在
其他方式)。

- 压缩
压缩编译后的代码和嵌入/预加载的文件。 应该是一个
三倍,

, ,

其中 native_encoder 是一个本地可执行文件,它将 stdin 压缩为 stdout(
最简单的接口),js_decoder 是一个 JavaScript 文件,它实现了
解码器,js_name 是解码器文件中要调用的函数的名称(其中
应该接收一个数组/类型化数组并返回一个数组/类型化数组。 压缩
仅在生成 HTML 时有效。 当压缩打开时,所有文件指定为
预加载的文件被压缩在一个大档案中,该档案与
输出 HTML 但后缀为 .data.compress

- 缩小
0:不缩小生成的 JavaScript 的空格(默认为 -氧气, -氧气, 或者如果
-g 用来)

1:缩小生成的 JavaScript 的

空格(默认在 -氧气+,假设 -g 未使用)

- 分裂
将生成的 javascript 文件拆分为多个部分以简化调试。 这个选项
仅在生成 Javascript 时才有效(目标 -o .js)。 带函数的文件
声明必须在执行时在主文件之前加载。

没有“-g”选项:

创建具有函数声明的文件,其后缀达到给定的大小
“_functions.partxxx.js”和后缀为“.js”的主文件。

使用“-g”选项:

重新创建 C 源文件的目录结构并存储函数
在各自的 C 文件中声明后缀为“.js”。 如果有这样的文件
超过给定的大小,将创建后缀为“.partxxx.js”的文件。 主要的
文件驻留在基本目录中并具有后缀“.js”。

--绑定 使用连接 C/C++ 的“embind”绑定方法编译源代码
和JS。

--忽略动态链接 通常 emcc 会将动态链接视为
静态链接,通过链接来自动态库的代码。 如果
同一个动态库被多次链接。 使用此选项,动态链接
被忽略,这允许构建系统继续进行而不会出错。 然而,你
稍后需要自己手动链接到共享库。

--shell 文件
生成 HTML 输出时使用的骨架 HTML 文件的路径名。 贝壳
使用的文件需要在其中包含此令牌:{{{ SCRIPT_CODE }}} 请​​注意,这
如果使用指定的 HTML 以外的目标,则忽略参数 -o 选项。

--js-库
除了 Emscripten 的 src/library_* 中的库之外,还要使用的 JavaScript 库

-v 打开详细输出。 这将通过 -v 到 Clang,并启用 EMCC_DEBUG
详细 emcc 的操作

--jcache
使用 JavaScript 缓存。 默认情况下禁用此功能。 启用后,emcc 将存储
编译结果缓存在缓存中,稍后编译时检查缓存,
类似于 ccache 的作用。 这允许增量构建 - 你在哪里
编译一个大程序,但只修改了其中的一小部分——要快得多
(以缓存访问的更多磁盘 IO 为代价)。 请注意,您需要启用
--jcache 用于加载和保存数据,因此您必须在完整构建中启用它
以加快以后的增量构建(您也启用它)。

缓存在编译的 4 个部分分别工作:“pre”,即类型和全局
变量; 然后将该信息输入到“funcs”中,即函数(即
我们并行化),然后“发布”,它根据
函数(例如,我们是否需要 long64 支持代码)。 最后,'jsfuncs' 是
JavaScript 级优化。 4 个部分中的每一个都可以单独缓存,但是
请注意,它们会相互影响:如果您重新编译一个 C++ 文件
更改全局变量 - 例如,添加、删除或修改全局变量,例如
通过添加 printf 或添加编译时时间戳,则 'pre' 不能是
从缓存加载。 由于 'pre 的输出被发送到 'funcs' 和 'post',它们
也会失效,只有 'jsfuncs' 会被缓存。 所以避免修改
全局变量让缓存充分工作。

要解决上一段中提到的问题,您可以使用

emscripten_jcache_printf

在您的代码中添加调试 printfs 时。 该函数经过特殊预处理,因此
它不会为其第一个参数创建全局常量字符串。 看
emscripten.h 了解更多详情。 请特别注意,您需要已经有一个
在您的代码中调用该函数*之前*您添加一个并执行增量
构建,以便添加外部引用(也是全局属性)不会
使一切无效。

请注意,您应该使用 -g 在链接阶段(bitcode 到 JS),对于 jcache
工作(否则,JS 缩小会混淆它)。

- 清除缓存
手动清除已编译的 emscripten 系统库(libc++、
libc++abi、libc)。 这通常会自动处理,但如果您更新 llvm
就地(而不是为新版本使用不同的目录),缓存
机制可能会混淆。 清除缓存可以解决与以下相关的奇怪问题
缓存不兼容,例如 clang 无法与库文件链接。 这也是
清除其他缓存数据,如 jcache 和引导重循环器。 之后
缓存被清除,此过程将退出。

--保存-bc PATH
编译为 JavaScript 或 HTML 时,此选项将保存位码的副本
到指定路径。 位码将包括所有被链接的文件,包括
标准库,并在任何链接时优化(如果有)之后。

--memory-init-文件
如果打开,我们会生成一个单独的内存初始化文件。 这样效率更高
而不是将嵌入在 JavaScript 中的内存初始化数据存储为文本。
(默认关闭)

目标文件,如果指定(-o ),定义将生成的内容:

.js
JavaScript的

.html
带有嵌入式 JavaScript 的 HTML

。公元前
LLVM 位码(默认)

.o
LLVM 位码(与 .bc 相同)

(注意,如果 --memory-init-文件 使用,然后除了一个 .js 或 .html 文件
生成,.mem 文件也会出现。)

-c 选项(告诉 gcc 不要运行链接器)将导致 LLVM 位码变为
生成,因为 emcc 仅在构建的最后链接阶段生成 JavaScript。

输入文件可以是 Clang 可以处理的源代码文件(C 或 C++),也可以是 LLVM
二进制形式的位码,或人类可读形式的 LLVM 汇编文件。

emcc 受几个环境变量的影响。 详情查看emcc源码
(搜索“os.environ”)。

emcc: 支持的目标: llvm bitcode, javascript, NOT elf (autoconf 喜欢看 elf
以上以启用共享对象支持)

版权


版权所有 © 2013 Emscripten 作者(见 AUTHORS.txt)这是免费和开源的
MIT许可下的软件。 没有保修; 甚至不是为了适销性或
适合特定用途。

使用 onworks.net 服务在线使用 emcc


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad