BillyYu

在Linux中利用gcc编译遇到问题

最近想开始学习stl,但是利用VC6.0进行编译的话,总会出现很多警告,而换用VS2005之类的,感觉太繁琐,为了建立一个空的控制台程序,要建立那么大一个文件,费得劲比较大,所以想着利用Linux中的gcc来编译,只要写一个.cpp的文件就可以了。可是对这个不是很了解,抄了一个文件进行编译,却出现好多的错误,可能是需要进行这样那样的设置的吧。特此立帖,希望达人能给我一些建议,如果可以能提供更好的编译器,那是更加的好了。谢谢先了

我用的sample

sample

输出的错误:
[root@localhost Cpp]# gcc SampleVector.cpp
/tmp/ccJVmST1.o(.text+0x1ee): In function `main':
: 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> >&)'
/tmp/ccJVmST1.o(.text+0x1fe): In function `main':
: 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> >&)'
/tmp/ccJVmST1.o(.text+0x203): In function `main':
: undefined reference to `std::cout'
/tmp/ccJVmST1.o(.text+0x208): In function `main':
: undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
/tmp/ccJVmST1.o(.text+0x211): In function `main':
: 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*)'
……
诸如此类的错误,我该怎么办呢?

posted on 2007-09-23 13:46 志华 阅读(2245) 评论(3)  编辑 收藏 引用

评论

# re: 在Linux中利用gcc编译遇到问题 2007-09-23 13:57 志华

哎呀,以后还是要遵循一条原则:知之为知之,不知google之。 后来我去找了一下,这个错误是因为用错了命令所致的,在linux中对C++的应用g++进行编译,顺便贴一下一个博客中的内容

Linux C++ 自学笔记
作者:未知 来源:http://www.51one.net (2005-03-21 13:39:10)


Linux C++ 自学笔记
1、安装系统
这就不用说了吧,我装的是Redhat Linux 7.2,安装过程智能化,价格也不贵(

9CD+500页手册共69RMB),大家也都支持支持正版,还有一些简单命令
ls - 列目录
cd - 进入目录
man - 帮助
gcc - 编译器

2、文本编辑器
开如想用vi,发现不太好用,在图形界面下找了个Advanced Editor,当文件存为.c或

.cpp后,关键字自动以不同颜色显示(呵呵,比windows的帅多了),支持缩格^I,赶

快加入Favorites,菜单位置在KDE menus->Editors->Advanced Editor

3、编译C-“Hello world!”
#include <stdio.h>

int main(void)
{
printf("Hello world!\n");
return 0;
}
存盘为Hello.c
在命令行下输入:gcc Hello.c -o hello (要注意大小写哦)
编译时可能有如下警告:
no newline at end of file
在文件最后补一个新行即可
执行文件:./hello
呵呵,Hello world!可爱的字眼就出来了

4、编译C++ -“Hello world!”
#include <iostream.h>

int main()
{
cout << "Hello world!\n" << endl;
return 0;
}
编译出错: undefined reference to ''cout''
呀!怎么连cout都不认识,赶快查查,看man怎么说:
man gcc
哦,原来要用g++编译C++程序
g++ Hello.cpp -o hello

5、编译类
有三个文件:Hello.h、Hello.cpp、MyFirst.cpp,内容如下:
file://Hello.h
#ifndef HelloH
#define HelloH

class Hello
{
Hello();
void Display();
}

file://Hello.cpp
#include "Hello.h"
#include <iostream.h>

Hello::Hello()
{
}

Hello::Display()
{
cout << "Hello world!\n" << endl;
}

file://MyFirst.cpp
#include <iostream.h>
#include "Hello.h"

int main()
{
Hello theHello;
theHello->Display();

return 0;
}
开始编译:g++ MyFirst.cpp -o MyFirst
呀,出错:
undefined reference to ''Hello::Hello(void)''
undefined reference to ''Hello::Display()''
呵,看来是不能链接Hello.cpp出错,先改一下
在MyFirst.cpp中:将#include "Hello.h"改为#include "Hello.cpp"
编译通过,在查查帮助,有参数 -c 可以只编译不链接

呵呵,天黑了,玩把帝国,晚上看看书,明天再接着来。


  回复  更多评论   

# re: 在Linux中利用gcc编译遇到问题 2007-09-23 21:51 AMXTSHMF

呵呵,需要了解一下gcc编译器,其实g++编译时他会调用gcc,然后链接。  回复  更多评论   

# re: 在Linux中利用gcc编译遇到问题 2009-06-14 10:51 老刘

你cout 命名空间都没引用 前面还得加 #include <iostream>
using namespace std;  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜