You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows平台GCC编译Hello World程序遇collect2.exe链接错误求助

解决Windows平台GCC编译C++程序的链接错误

问题现象

编译以下C++代码时出现链接错误:

#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

错误信息:

c:/users/oops9_wimj8q/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\OOPS9_~1\AppData\Local\Temp\ccL9PsTD.o:main.cpp:(.text+0x22): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
c:/users/oops9_wimj8q/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\OOPS9_~1\AppData\Local\Temp\ccL9PsTD.o:main.cpp:(.text+0x34): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
c:/users/oops9_wimj8q/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\OOPS9_~1\AppData\Local\Temp\ccL9PsTD.o:main.cpp:(.text+0x56): undefined reference to `std::ios_base::Init::~Init()'
c:/users/oops9_wimj8q/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\OOPS9_~1\AppData\Local\Temp\ccL9PsTD.o:main.cpp:(.text+0x89): undefined reference to `std::ios_base::Init::Init()'
c:/users/oops9_wimj8q/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\OOPS9_~1\AppData\Local\Temp\ccL9PsTD.o:main.cpp:(.rdata$.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_[.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_]+0x0): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
c:/users/oops9_wimj8q/scoop/apps/gcc/current/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\OOPS9_~1\AppData\Local\Temp\ccL9PsTD.o:main.cpp:(.rdata$.refptr._ZSt4cout[.refptr._ZSt4cout]+0x0): undefined reference to `std::cout'
collect2.exe: error: ld returned 1 exit status

问题原因

错误本质是未链接C标准库(libstdc)。如果使用gcc命令编译C代码,gcc默认作为C语言编译器,不会自动链接C标准库,导致std::cout、std::endl等标准库符号无法找到。

解决方法

方法1:使用g++命令编译(推荐)

g++是GCC的C专用前端,会自动处理C代码并链接标准库:

g++ main.cpp -o main.exe

方法2:用gcc命令手动链接C++标准库

如果坚持使用gcc,需要添加-lstdc++参数指定链接libstdc++库:

gcc main.cpp -o main.exe -lstdc++

验证

运行生成的可执行文件:

main.exe

正常输出:

Hello, World!

内容的提问来源于stack exchange,提问作者BadDream89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:53:13