Closed dariost closed 6 years ago
Add -static-libstdc++
.
$ x86_64-w64-mingw32-clang++ -o program.exe -pthread -static-libstdc++ -static program.cpp
/tmp/program-b7fcbe.o:(.text+0xa2): undefined reference to `__imp___dynamic_cast'
/tmp/program-b7fcbe.o:(.text+0xb7): undefined reference to `__imp___cxa_bad_cast'
/tmp/program-b7fcbe.o:(.text+0xf1): undefined reference to `__imp___cxa_begin_catch'
/tmp/program-b7fcbe.o:(.text+0x146): undefined reference to `__imp___cxa_end_catch'
/tmp/program-b7fcbe.o:(.text+0x161): undefined reference to `__imp___cxa_end_catch'
/tmp/program-b7fcbe.o:(.text[__clang_call_terminate]+0x7): undefined reference to `__imp___cxa_begin_catch'
clang-6.0: error: linker command failed with exit code 1 (use -v to see invocation)
I've tried all sorts of combinations of -static
and -static-libstdc++
, but this is always the result
Maybe there is some #define
missing.
Compare the output of x86_64-w64-mingw32-clang++ -dM -E - < /dev/null
and x86_64-w64-mingw32-g++ -dM -E - < /dev/null
Out of ideas. Please file another bug report at https://bugs.llvm.org/describecomponents.cgi?product=clang.
I know now what's going on. Clang uses DLL linkage while GCC doesn't.
$ x86_64-w64-mingw32-clang++ program.cpp -c && x86_64-w64-mingw32-nm program.o | grep cxa
U __imp___cxa_bad_cast
U __imp___cxa_begin_catch
U __imp___cxa_end_catch
$ x86_64-w64-mingw32-g++ program.cpp -c && x86_64-w64-mingw32-nm program.o | grep cxa
U __cxa_bad_cast
U __cxa_begin_catch
U __cxa_end_catch
Do you still want me to open another bug report or are you working on this? Also, if I have to open it, please give me the details to attach to the report.
I am not an LLVM developer - you must report it to them. My previous comment should be enough to describe the problem.
Issue reported on the clang bugzilla: https://bugs.llvm.org/show_bug.cgi?id=34122
https://stackoverflow.com/questions/42545078/clang-version-5-and-lnk4217-warning
Add
-Xclang -flto-visibility-public-std
to your compiler options. Like so:clang++ -Xclang -flto-visibility-public-std -o test.exe test.cpp
From JayPhi
It is clang bug with possible fix here https://github.com/mati865/MINGW-packages/blob/954fa97c5349029b75b63c58ae81c62a39fa9658/mingw-w64-clang/0106-MinGW-use-flto-visibility-public-std-CC1-arg-to-get-.patch
If there will be no regressions I'll try to push it for next feature LLVM/clang release.
Fixed in clang trunk and 6.0 (coming next year) https://github.com/llvm-mirror/clang/commit/be95e325b8e301e87b32edba022796726dfe90f7
clang 6.0 has been released, and the issue has been fixed
When trying to compile this program:
with
-static
I get the following error:This is the complete error log with
-v