我尝试使用以下命令从由llvm-g++
编译的C++代码生成C代码:
llvm-g++ -emit-llvm -c ./example.cpp -o example.o
llc -march=c example.o
我在一台运行Ubuntu (Linux 3.16.0-45-generic)
的机器上尝试了这些命令。
然而,LLVM静态链接器报告编译后的文件无效,而不是将C代码写入标准输出:error: expected top-level entity
。
我该如何使用LLVM链接器生成C代码?
-emit-llvm
选项,该选项应该生成位码而不是目标文件)。在早期版本中支持这一功能(例如,请参阅此FAQ),但C后端已在3.1版中删除(请参阅发布说明)。 - mjturner