gcc 编译后的程序在其他电脑运行提示缺少libstdc plus plus-6.0.dll

⌚Time: 2021-08-13 09:35:53

👨‍💻Author: Jack Ge

项目场景:

使用g++编译运行一个socket通信程序。

g++ bad.cpp -o a.exe -lws2_32

问题描述:

将程序拷贝到另一台电脑上无法运行,出现以下提示

原因分析:

出现此问题是程序缺少动态链接库造成的,当动态链接库和静态链接库同时存在,g++会优先进行动态编译,因此当在其他的电脑上没有相应的动态链接库文件时,程序运行会报错。

解决方案:

解决方案一:手动将提示缺少的dll文件拷贝到报错程序所在的目录,程序就会正常运行。dll文件一般存在于g++安装目录下的bin文件夹内

解决方案二:使用-static选项进行静态编译,这样就会把相关代码打包进程序,运行时也就不需要动态链接库的支持了。

g++ -static bad.cpp -o a.exe -lws2_32

由于使用静态链接库将代码编译打包到程序里,程序相应的体积也会增大:

动态编译程序大小:

静态编译程序大小: