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

How to compile a C++ program in LLVM using clang++?

本文关键字:编译 C++ 程序 LLVM 何使用 clang++      更新时间:2023-10-16

有一个教程 - 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

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

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

您好.cpp:

#include < iostream >
int main()
{
    std::cout << "TESTn" << std::endl;
    return 0;
}
//-----------------

操作系统:视窗7。

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

您可以使用我的 GCC 和 Clang 软件包:

下载并解压缩到同一目录。Clang将使用GCC 4.6.3的libstdc++和MinGW-w64的CRT。像 gcc 一样称呼它。

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

Clang的Windows支持还可以,但远未完成。例如,不幸的是,您无法将整个C++类导出。而且Win64代码生成也不足以安装工作C++(即使与GCC结合使用,例如32位)。