clang “hello, world!” link errors in windows

前端 未结 5 2132
借酒劲吻你
借酒劲吻你 2021-02-14 03:40

I just downloaded the CLang sources, made a Visual C++ 10 IDE workspace by using CMake, and built everything from Visual C++ 10.0 (express).

Now I get a bunch of linker

相关标签:
5条回答
  • 2021-02-14 04:03

    Clang/LLVM's supports for Windows are still not perfect. Try to include this option: -Xclang -cxx-abi -Xclang microsoft. But, I'm not sure whether it makes work correctly.

    0 讨论(0)
  • 2021-02-14 04:04

    Use clang++ only to compile .cpp and then instead of MS link try ld linker. Works for me.

    0 讨论(0)
  • 2021-02-14 04:17

    Unlike MinGW gcc, clang does not include the glibc library, so by default, it has no standard library or whatsoever. I don't know how to use the Visual C++ standard libary with it, but its pretty clear from what you post, that by default it produces symbols like gcc, so you need to use it with glibc or newlib...

    And either you specify the the libary path with -Ldirectory to the .lib files (or .a for glibc), or put them into one of default clang search pathes (run: clang -v -x c++ -fsyntax-only some file to see them.)

    0 讨论(0)
  • 2021-02-14 04:21

    If you want to experiment with Clang on Windows, I suggest using a MinGW built version, like the one I provide here (or build it yourself using your favourite MinGW toolchain):

    • 32-bit

    • 64-bit

    You will need both the gcc and clang packages (those without linux/mac/cygwin suffixes) and extract them to the same directory. Clang uses gcc to link, and can link to GCC's libstdc++, pretty much giving you access to the C++ standard library. Exceptions work for the 32-bit version. I haven't had any luck with debug info though.

    Work is being done to bring better MS support to Clang, but it's a slowly progressing task.

    0 讨论(0)
  • 2021-02-14 04:23

    I think there is a misunderstanding here.

    Clang is (slowly) being taught how to parse MFC headers. As far as I know, François Pichet is about alone on this project but there are only a few errors in the whole headers lot (!), and obviously the standard library shipped with VC++ parsing has been completed a long time ago.

    However, this is about AST generation, not Code Generation. Clang is currently unable to properly generate code to interact with VC++ libraries. Not only is the name mangling incomplete, but the ABI is still being shaped (there have been numerous patches in the last 2 months to get the right padding/alignment) and there is a long standing issue with exceptions.

    If you wish to use Clang on Windows, you should use MinGW or MinGW64, see ruben's answer.

    0 讨论(0)
提交回复
热议问题