使用std::cout的C++ Hello World程序出现链接错误,如何解决?
编译C++程序出现未定义符号错误的解决办法
你遇到的错误是因为用gcc编译C代码时,默认不会自动链接C标准库。那些Undefined symbols都是C++标准库(比如std::cout相关组件)里的符号,编译器找不到它们的实现,所以链接失败。
两种解决方式:
1. 用专门的C++编译器g++编译(推荐)
g++是为C设计的编译器,会自动处理C标准库的链接,直接执行:
g++ -o hello hello.cpp
编译完成后运行程序:
./hello
2. 继续用gcc,但手动指定链接C++标准库
如果非要用gcc,需要添加-lstdc++参数,让编译器链接C++标准库:
gcc -o hello hello.cpp -lstdc++
额外说明
你有C语言基础,记住这俩工具的区别:
gcc:编译C代码时自动链接C标准库,但编译C代码不会自动处理C标准库g++:不管是C还是C代码,都会自动对应链接标准库,日常写C用它更省心
你的代码本身没问题,就是编译命令用错了,调整后就能正常运行。
内容的提问来源于stack exchange,提问作者user16524580
相关产品推荐
相关产品推荐

