如何使用clang ++在LLVM中编译C ++程序?

时间:2012-09-28 15:58:32

标签: c++ c llvm clang++

有一个教程 - http://llvm.org/docs/GettingStartedVS.html示例在纯C中完成。我可以编译并链接它。没有问题,真的。但我需要C ++,而不是纯粹的C.而且这里遇到了困难。

对于clang ++,我使用字符串

"C:\..> clang++ -c hello.cpp -emit-llvm -o hello.bc"

然后:

"C:\..> llc -filetype=obj hello.bc"

"C:\..> link hello.obj -defaultlib:libcmt -out:hello.exe"

我得到14个错误LNK2001: unresolved external symbol

所以,我需要一些提示。我做错了什么?

//-----------------

HELLO.CPP:

#include < iostream >

int main()

{

    std::cout << "TEST\n" << std::endl;

    return 0;

}

//-----------------

操作系统:Windows7。

UPD:主要问题:如何从.bc获取.exe? (LLVM,Windows7)

1 个答案:

答案 0 :(得分:1)

您可以使用我的GCCClang套餐:

下载并将它们解压缩到同一目录。 Clang将使用GCC 4.6.3的libstdc ++和MinGW-w64的CRT。称之为你会gcc。

由于ABI问题,Clang / LLVM目前无法与MSVC的C ++库一起使用。 GCC的libstdc ++运行得很好,虽然它在令人惊讶的地方有漏洞(如std::to_string<regex><thread>)。

Clang的Windows支持是可以的,但还远未完成。不幸的是,你无法举例说明dllexport整个C ++类。并且Win64代码生成也不足以安装有效的C ++(即使与GCC结合使用,例如32位)。