在Debian Testing上用Clang++交叉编译Windows平台C++23程序时,使用std::println出现重复段错误的解决求助
在Debian Testing上用Clang交叉编译Windows平台C23程序时,使用std::println出现重复段错误的解决求助
各位好,我最近在Debian Testing环境下尝试用Clang交叉编译Windows平台的C++23程序,碰到了一个搞不定的问题,想请教下大家。
我先从官方源安装了最新版本的Clang和MinGW,然后写了一个非常简单的测试程序,代码如下:
#include <print> int main() { using namespace std; println("Hello World!"); }
接着我用这条命令尝试编译:
clang++-18 --target=x86_64-pc-windows-gnu --std=c++23 ./test.cpp -o ./test.exe --static -lstdc++exp
结果编译失败了,弹出了一大串重复段错误的提示,核心内容大概是这样的:
/usr/lib/gcc/x86_64-w64-mingw32/14-win32/libstdc++.a(eh_alloc.o): duplicate section `.rdata$_ZTSSt9exception[_ZTSSt9exception]' has different size /usr/lib/gcc/x86_64-w64-mingw32/14-win32/libstdc++.a(eh_exception.o): duplicate section `.rdata$_ZTSSt9exception[_ZTSSt9exception]' has different size ...(还有很多几乎一模一样的重复段错误信息)
我自己琢磨了下,猜测是LD在链接的时候同时把libstdc++.a和libstdc++exp.a都链进了同一个二进制文件里,才导致了这种冲突,但我实在不知道该怎么阻止这种情况发生。有没有大佬能给我指条明路呀?
内容来源于stack exchange
相关产品推荐
相关产品推荐

