我在C中有一个名为triple的项目,你可以在其中添加,删除和匹配一些Triplets。现在的想法是使用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
答案 0 :(得分:0)
emcc程序是一个编译器前端。这意味着它将源代码作为输入。您不需要首先使用GCC编译代码。 emscripten网站说得最好:“使用Emscripten Compiler前端(emcc)作为现有项目中gcc的直接替代品。”
如果你有源代码,似乎没有充分的理由首先编译到LLVM。
您需要做的只是用emcc替换Makefile中对gcc的任何引用。
更好 - 添加CC
变量并使用它。例如
CC=emcc
然后用$(CC)
替换对编译器的所有引用。 $ bit是如何访问Makefile中的变量。使用变量意味着您可以在以后轻松更改编译器。
答案 1 :(得分:0)
您尚未为.o行指定输出目标,因此我认为它将构建为a.o
。
尝试修改你的makefile来说:
$(CC) -g -c triple.c -o triple.o