Hi, I have a question about C++ ABI compatibility (or lack thereof) between mingw-w64 and clang.
I am trying to cross-compile go-webrtc [https://github.com/keroserene/go-webrtc] with mingw-w64 (cgo), which has webrtc as its dependency (compiled with clang). I am running into errors during the linking stage: /var/tmp/dist/mingw-w64/x86_64-w64-mingw32/include/malloc.h:183:0: note: this is the location of the previous definition #define alloca(x) __builtin_alloca((x)) ^ # github.com/keroserene/go-webrtc /var/tmp/dist/mingw-w64/lib/gcc/x86_64-w64-mingw32/5.4.0/../../../../x86_64-w64-mingw32/lib/../lib/libstdc++.a(cow-stdexcept.o): In function `std::string::_M_data() const': /var/tmp/build/gcc/x86_64-w64-mingw32/libstdc++-v3/src/c++11/../../../../gcc-5.4.0/libstdc++-v3/src/c++11/cow-stdexcept.cc:44: multiple definition of `std::logic_error::logic_error(std::logic_error const&)' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/peerconnection.cc.o:peerconnection.cc:(.text$_ZNSt11logic_errorC2ERKS_[_ZNSt11logic_errorC2ERKS_]+0x0): first defined here /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x5a9): undefined reference to `cricket::AudioCodec::ToString() const' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x6de): undefined reference to `webrtc::RtpExtension::ToString() const' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x813): undefined reference to `cricket::DataCodec::ToString() const' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x8f5): undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int)' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x96a): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xa1b): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xbf8): undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int)' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xc6d): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xd20): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xdb1): undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int)' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xe26): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xed5): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xf6d): undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int)' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0xfe2): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x1094): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x112c): undefined reference to `rtc::FatalMessage::FatalMessage(char const*, int)' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x11a1): undefined reference to `rtc::FatalMessage::~FatalMessage()' /tmp/go-build868110800/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o:ctestenums.cc:(.text+0x1254): undefined reference to `rtc::FatalMessage::~FatalMessage()' /var/tmp/dist/mingw-w64/lib/gcc/x86_64-w64-mingw32/5.4.0/../../../../x86_64-w64-mingw32/bin/ld: $WORK/github.com/keroserene/go-webrtc/_obj/ctestenums.cc.o: bad reloc address 0xc0 in section `.rdata' collect2: error: ld returned 1 exit status The webrtc library has the missing symbols and so I was wondering if this error stems from incompatibility between mingw-w64 and clang, and if yes, what's the possible fix for it? -- Sukhbir ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public