我在玩 emscripten 并且不断收到这个令人困惑的消息
|[413077]-$>../emmake Makefile
Error: Exception thrown when invoking Popen in make with args: "Makefile"!
Traceback (most recent call last):
File "../emmake", line 24, in <module>
shared.Building.make(sys.argv[1:])
File "/Users/jkirchartz/Dropbox/emscripten/tools/shared.py", line 670, in make
Popen(args, stdout=stdout, stderr=stderr, env=env).communicate()
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 13] Permission denied
Run Code Online (Sandbox Code Playgroud)
但即使我使用sudo我也会得到同样的错误:
|[254829]-$>sudo !!
sudo ../emmake Makefile
Password:
Error: Exception thrown when invoking Popen in make with args: "Makefile"!
Traceback …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用emscripten构建一个项目(logstalgia),但该项目需要ftgl dev库(libftgl-dev).我一直在寻找链接这个库的正确方法,所以我可以运行shell> emconfigure logstalgia/configure,但我无法弄清楚如何编译和链接这个库到项目中.
我已经阅读了emscripten文档,但不幸的是,自从我使用gcc或编写了一个makefile以来已经有好几年了.
Emscripten说"Other libraries not included with emscripten, like boost, you would need to compile yourself and link with your program, just as if they were a module in your project."不幸的是我没有足够的先前知识来知道这要我做什么.我理解这个概念,但不知道如何执行此操作.任何帮助,将不胜感激.
我有一个C用Emscritpen 编译的javascript函数,它使用了一些内存(大约8mb),我需要经常调用它.(每20秒一次通话).
但是每次调用后使用的内存量都会增加.有些电话后来我得到了一个例外:
Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value 100663296, (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.
如果我添加一些内存,它会传递更多的调用,但在再次抛出异常后.我无法理解为什么Emscripten每次尝试都需要HEAP放大,如果我每次尝试都做同样的事情.我不能在这里发布所有代码,因为它是来自大型库的功能.
PS:
在电话前的某个地方:
var render = Module.cwrap('render_djvu', 'number', ['string']);
Run Code Online (Sandbox Code Playgroud)
呼叫:
FS.createDataFile("/", "test.djvu", byteArray, true, true);
removeRunDependency();
var heapPointer = render('test.djvu');
FS.truncate('test.djvu', 0);
FS.unlink('test.djvu');
Run Code Online (Sandbox Code Playgroud)
PS:
项目代码:https://github.com/saint3k/reader,C分支.reader-js中的索引文件.使用pre.js和post.js文件在a.out.js中编译代码.要重建,请在minidjvu文件夹中使用./compile.sh.
我正在为一个个人项目调查 emscripten,我想使用 C 或 C++ 以外的语言来这样做。
但是,当我在研究 emscripten 时,我想我应该使用一个用 C 编写的简单的“hello world”示例。
我知道我应该使用 emcc 编译它:
$ python `which emcc` tmp.c
Run Code Online (Sandbox Code Playgroud)
这将为我生成一个有效的 a.out.js 文件。到目前为止还好。
但是,我想使用不同的语言,这意味着我不能使用emcc或emcc++,所以我想直接生成llvm bitcode。
我曾尝试使用 clang 3.3,这是我的 mac os x 10.9.2 系统上的当前版本,但是以下不起作用:
$ clang -S -emit-llvm tmp.c -o tmp.ll
$ python `which emcc` tmp.ll
warning: incorrect target triple 'x86_64-apple-macosx10.9.0' (did you use emcc/em++ on all source files and not clang directly?)
Run Code Online (Sandbox Code Playgroud)
警告是正确的;我确实直接使用了clang,无论如何我该怎么做,以便我可以尝试用另一种也使用llvm的语言来做同样的事情?
我刚开始使用Emscripten,并希望开始使用GLFW和其他库.我完全迷失了如何使用Emscripten构建,链接和使用其他库.
我曾尝试按照Emscripten网站上的说明进行操作,但他们没有帮助我. http://kripken.github.io/emscripten-site/docs/compiling/Building-Projects.html#using-libraries
有没有关于如何使用Emscripten库的详细说明?或者特别是GLFW?
我有一个包含使用 emscripten 生成的库的应用程序。我正在使用标志编译它们:
-s MODULARIZE=1 -s EXPORT_NAME=\"'SomeModuleName'\"
Run Code Online (Sandbox Code Playgroud)
但是,库 FS 不再可用。当我在没有标志的情况下进行编译时,我可以在任何其他脚本中使用库 FS。
是否可以在我的模块中导出 FS?
Ball.h:7:10: fatal error:
'glm/glm.hpp' file not found
#include <glm/glm.hpp>
^
1 warning and 1 error generated.
ERROR:root:compiler frontend failed to generate LLVM bitcode, halting
Run Code Online (Sandbox Code Playgroud)
我试图用Emscripten编译我的C ++项目。但是我得到上面的错误。它在VS15中运行良好。我怎样才能解决这个问题?
我可以做到这一点,它将编译:
#include "..\..\packages\glm.0.9.6.3\build\native\include\glm\glm.hpp"
Run Code Online (Sandbox Code Playgroud)
或创建一个头文件,例如
myglm.h
我将在其中包含此文件,其他源文件将包含myglm.h,
但是我想知道是否有更好的方法?
谢谢
我很好奇是否有可能让emscripten构建一个没有libc的二进制文件.
如果我有simple.c:
int add1(int x) {
return x + 1;
}
Run Code Online (Sandbox Code Playgroud)
而且我不想包含任何libc,这可能吗?
到目前为止,我最好的尝试是:
emcc simple.c -s NO_FILESYSTEM=1 -s DISABLE_EXCEPTION_CATCHING=1 -s DEFAULT_LIBRARY_FUNCS_TO_INCLUDE='[]' -s LIBRARY_DEPS_TO_AUTOEXPORT='[]' -s EXPORTED_FUNCTIONS='["add1"]' -s USE_SDL=0 -o simple.js -nostdlib
Run Code Online (Sandbox Code Playgroud)
但生成的输出仍包含malloc符号,字符串转换例程等.
我也对生成webassembly的过程感兴趣; 也就是说,我的真正目标是生成一个只包含单个函数的webassembly模块.这可能与emscripten有关吗?
我阅读了https://developer.mozilla.org/en-US/docs/WebAssembly/Using_the_JavaScript_API和http://webassembly.org/docs/js/,似乎我找到了从 wasm 调用 Javascript 函数的所有示例是用受 LISP 启发的语法编写的。
是否可以使用 emscripten C 在 wasm 中导入 JS 函数?
我有一些Qt国际象棋应用程序。当我使用VS编译器或gcc进行构建时,一切正常,但是使用emscripten的Web程序集版本存在问题。当我使用emrun运行html时,一切正常,但图像未显示出来。
我的emscripten版本是emcc(Emscripten gcc / clang-like替换)1.38.30(commit d33f7a29002a2463a7956cd53a559b97a52f9560)。
我的qmake版本:QMake 3.1版
我的Qt版本:使用Qt版本5.13.0
我正在使用来自wasm的在线linux安装程序的官方Qt二进制文件。
我正在使用emrun --no_browser .html命令在本地主机上设置服务器。
我尝试了各种路径规范。我最终得到了这个代码示例,可以正常运行,但不适用于Web程序集版本。这是加载示例图像的代码。
...
QDir::setSearchPaths("qrc", QStringList(":/"));
return QIcon(QUrl("qrc:///Images/king_white.svg").toString());
Run Code Online (Sandbox Code Playgroud)
这是我的.qrc文件:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>Images/king_black.svg</file>
...
</qresource>
</RCC>
Run Code Online (Sandbox Code Playgroud)
在.pro文件中,我还有:
RESOURCES = resources.qrc
Run Code Online (Sandbox Code Playgroud)
当我不使用emscripten时,它可以正常工作。感谢帮助。
编辑:构建选项(从qmake生成的Makefile中)
CC = emcc
CXX = em++
DEFINES = -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
CFLAGS = -pipe -O3 -s ALLOW_MEMORY_GROWTH=1 -Wall -W $(DEFINES)
CXXFLAGS = -pipe -O3 -std=gnu++1y -s ALLOW_MEMORY_GROWTH=1 -Wall -W $(DEFINES)
INCPATH = -I. -I../../Qt513/5.13.0/wasm_32/include -I../../Qt513/5.13.0/wasm_32/include/QtWidgets -I../../Qt513/5.13.0/wasm_32/include/QtGui -I../../Qt513/5.13.0/wasm_32/include/QtCore -I. -I/home/somas/.emscripten_ports/openssl/include -I../../Qt513/5.13.0/wasm_32/mkspecs/wasm-emscripten
QMAKE = /home/somas/Qt513/5.13.0/wasm_32/bin/qmake
DEL_FILE = …Run Code Online (Sandbox Code Playgroud) emscripten ×10
c++ ×4
javascript ×2
llvm ×2
webassembly ×2
asm.js ×1
browser ×1
emmake ×1
export ×1
fs ×1
glfw ×1
glm-math ×1
llvm-clang ×1
llvm-ir ×1
makefile ×1
qt ×1