Debian环境MinGW交叉编译Windows程序运行缺失libc++问题问询
问题解答
问题1:libc++相关说明
- libc是LLVM/Clang项目提供的C标准库实现,不属于glibc:glibc是GNU推出的Linux平台C标准库,仅包含C语言标准接口实现,完全不包含C++相关的功能。
- 你当前使用的x86_64-w64-mingw32-gcc默认采用的C标准库是GNU的libstdc,和libc是两套独立的实现。如果你的项目明确指定要使用libc编译Windows目标程序,需安装MinGW对应版本的libc++包:
sudo apt install libc++-mingw-w64-x86-64 libc++abi-mingw-w64-x86-64 - 从你提供的find输出可以看到,系统中已经存在MinGW版的libstdc++动态库:
/usr/lib/gcc/x86_64-w64-mingw32/10-win32/libstdc++-6.dll,你所说的找不到该文件是Wine的搜索路径配置错误导致的。
问题2:apt安装glibc的说明
直接执行apt-get install glibc只会安装Debian原生(对应Linux x86_64目标)的glibc相关包,不会安装MinGW对应版本。且MinGW编译的Windows目标程序完全不会使用glibc,Windows平台的C运行时由mingw-w64-crt提供,不需要安装glibc解决Windows程序的依赖问题。
当前运行报错的解决方法
你配置的Wine搜索路径有误,当前路径指向了libgcc.a静态库文件,而非包含dll的目录:
- 将Wine的PATH环境变量中的对应条目替换为目录路径:
Z:\usr\lib\gcc\x86_64-w64-mingw32\10-win32 - 可选优化:编译时添加
-static-libstdc++ -static-libgcc参数,可将两个依赖库静态链接到生成的exe中,运行时无需额外携带dll文件。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

