html - Emscripten - 如何使用 emcc 而不是 gcc 来使用我的 makefile?

标签 html c emscripten

我有一个名为 Triplet 的 C 项目,您可以在其中添加、删除和匹配一些 Triplet。现在的想法是使用 emcc 和 emmake 将其转换为 html。

我尝试编译它:

 emmake make

然后使用:

emcc triple.o -s WASM=1 -o triple.html

但我收到错误:

WARNING:root:triple.o is not valid LLVM bitcode
ERROR:root:no input files
note that input files without a known suffix are ignored, make sure 
your input files end with one of: ('.c', '.C', '.i', '.cpp', '.cxx', 
'.cc', '.c++', '.CPP', '.CXX', '.CC', '.C++', '.ii', '.m', '.mi', 
'.mm', '.mii', '/dev/null', '.bc', '.o', '.obj', '.lo', '.dylib', 
'.so', '.a', '.ll', '.h', '.hxx', '.hpp', '.hh', '.H', '.HXX', '.HPP', 
'.HH')

我错过了什么?是否有另一种方法可以使用 emcc 代替 gcc 来使用 make 文件?

这是我正在使用的 make 文件。

CC=emcc
triple : triple.o insert.o match.o Delete.o printList.o writeList.o
    $(CC) -o triple triple.o insert.o match.o Delete.o printList.o 
    writeList.o

triple.o : triple.c
    $(CC) -g -c triple.c

insert.o : insert.c
    $(CC) -g -c insert.c

match.o : match.c
    $(CC) -g -c match.c

Delete.o : Delete.c
    $(CC) -g -c Delete.c

printList.o : printList.c
    $(CC) -g -c printList.c

writeList.o : writeList.c
    $(CC) -g -c writeList.c

最佳答案

emcc 程序是一个编译器前端。这意味着它以源代码作为输入。您不需要先使用 GCC 编译代码。 emscripten 网站说得最好:“在现有项目中使用 Emscripten 编译器前端 (emcc) 作为 gcc 的直接替代品。”

如果你有源代码,似乎没有充分的理由首先编译到 LLVM。

您需要做的只是用 emcc 替换 Makefile 中对 gcc 的任何引用。

更好 - 添加一个 CC 变量并使用它。例如 CC=emcc 然后用 $(CC) 替换对编译器的所有引用。 $ 位是如何访问 Makefile 中的变量。使用变量意味着您以后可以轻松更改编译器。

关于html - Emscripten - 如何使用 emcc 而不是 gcc 来使用我的 makefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50446124/

相关文章:

html - 通过终端服务 npm http-server 时出错。 (错误 404)

c - 负数问题

javascript - 如何使用 emscripten 将使用 zlib 的项目转换为 javascript?

javascript - 性能 : NaCl vs Emscripten

c++ - CMake 制作的 Emscripten 库无法链接

html - 从左上角旋转一个 div,transform-origin 不起作用

html - 横向评论表单提交

javascript - 使用 SRC 将 Try Catch 添加到 Javascript

使用现有 C 源代码时出现 C++ 错误 C2440

c - 在结构中将指针数组初始化为 NULL