首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emscripten -如何使用我的makefile与emcc,而不是gcc?

Emscripten -如何使用我的makefile与emcc,而不是gcc?
EN

Stack Overflow用户
提问于 2018-05-21 17:49:14
回答 2查看 2.9K关注 0票数 2

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

我尝试用以下命令编译它:

代码语言:javascript
复制
 emmake make

然后使用:

代码语言:javascript
复制
emcc triple.o -s WASM=1 -o triple.html

但是我得到了一个错误:

代码语言:javascript
复制
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中使用make文件,而不是在gcc中使用?

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

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2018-05-22 14:12:19

您还没有为.o行指定输出目标,所以我认为它将构建为a.o

尝试修改您的makefile,如下所示:

代码语言:javascript
复制
$(CC) -g -c triple.c -o triple.o
票数 0
EN

Stack Overflow用户

发布于 2018-05-21 18:48:33

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

如果你有源代码,似乎没有很好的理由首先编译成LLVM。

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

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50446124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档