gcc:undefined reference to 'std::cout'

gcc says: undefined reference to 'std::cout' @ 10/17/2005
计算人生
boss让写的程序,要在linux跟windows下跑,结果我先用vs.net写完,然后去gcc下编译,就出了n个屏幕的这个错误

我保证自己的程序绝对是标准的c++程序,gcc居然不认,我就ft了

本来以为是gcc版本太老,update到3.4.4,结果一样


#include<iostream>
using namespace std;
改成
#include<iostream.h>
结果还是一样

郁闷了,直接写个hello world程序,发现只要使用了iostream库就出这个错

google,发现N多人都出这个错,就是没发现有一个正面回答这个问题的人。在cygwin相关的一个mailing list里面有人问这个问题,结果下面的回答是让他把cygwin版本,gcc版本,及cygwin安装的各个包的版本都发上来,晕啊。这个问题应该是跟版本无关的吧!

终于找到一个很没人气的论坛,里面的回答很简单:编c++程序,要用g++

当场就郁闷了,合着我忙了半天就这么简单啊!自己试试
g++ HelloWorld.cpp
一次成功。这种问题......唉,相信很多从windows转到linux的c++程序员都应该碰到过吧,为什么gcc的manual里就不写呢?

前几天刚开始用gcc时还有一个问题,就是老提示 no newline at end of file,后来在网上google半天才知道最后一行得留个空行......

万事开头难啊,学用Linux这种万恶的无人性的OpenSource的软件更难啊......

 

转载于:https://www.cnblogs.com/key000/archive/2011/03/03/4084818.html

编译失败的原因是?[user@iZwz9eoohx59fs5a6ampomZ linux-83]$ ll total 8 -rw-rw-r-- 1 user user 80 Aug 25 20:25 makefile -rw-rw-r-- 1 user user 273 Aug 25 20:24 signal.cc [user@iZwz9eoohx59fs5a6ampomZ linux-83]$ cat makefile signal:signal.cc gcc -o $@ $^ -std=c++11 -g .PHONY:clean clean: rm -f signal [user@iZwz9eoohx59fs5a6ampomZ linux-83]$ cat signal.cc #include <iostream> #include <signal.h> #include <unistd.h> void catchSig(int signum) { std::cout << "获取一个信号:" << signum << std::endl; } int main() { for(int sig = 1; sig <= 31; sig++) signal(sig,catchSig); while(true) sleep(1); return 0; } [user@iZwz9eoohx59fs5a6ampomZ linux-83]$ make gcc -o signal signal.cc -std=c++11 -g /tmp/ccYVwKOx.o: In function `catchSig(int)': /home/user/qaq/linux-83/signal.cc:7: undefined reference to `std::cout' /home/user/qaq/linux-83/signal.cc:7: 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*)' /home/user/qaq/linux-83/signal.cc:7: undefined reference to `std::ostream::operator<<(int)' /home/user/qaq/linux-83/signal.cc:7: 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> >&)' /home/user/qaq/linux-83/signal.cc:7: undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))' /tmp/ccYVwKOx.o: In function `__static_initialization_and_destruction_0(int, int)': /usr/include/c++/4.8.2/iostream:74: undefined reference to `std::ios_base::Init::Init()' /usr/include/c++/4.8.2/iostream:74: undefined reference to `std::ios_base::Init::~Init()' collect2: error: ld returned 1 exit status make: *** [signal] Error 1 [user@iZwz9eoohx59fs5a6ampomZ linux-83]$
最新发布
08-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值