求助:有没有指导如何看懂G++编译错误信息的地方?

软件和网站开发以及相关技术探讨
回复
chenchi
帖子: 4
注册时间: 2009-08-16 22:53

求助:有没有指导如何看懂G++编译错误信息的地方?

#1

帖子 chenchi » 2009-09-19 21:58

小的是Linux新人,遇到G++的编译错误信息,简直两眼一抹黑,没有没哪里做这方面的指导的?网页或者链接给一个吧?

我遇到的编译错误比较多,但是都是类似这样的:
main.o: In function `std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
main.cpp:(.text+0x65): undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long) const

首先,这里什么地方指出了出现错误的行号呢?0x65应该不是行号
其次,这个意思应该是说,函数std::string::operator[](unsigned long) const没有定义吧,可能是某函数要求的参数是const std::string,但是在里面又调用了那个字符串的[]方法。这个理解应该没错吧?请各位不吝指点

关键我就是找不到那个地方出现了这样的问题。。。
:em20
上次由 chenchi 在 2009-09-19 22:03,总共编辑 1 次。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#2

帖子 wangdu2002 » 2009-09-19 22:01

要E文好,直接看GNU的GCC和GDB的帮助。这方面中文资料不多,恶补E文和C++编程基础知识吧。 :em20
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
chenchi
帖子: 4
注册时间: 2009-08-16 22:53

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#3

帖子 chenchi » 2009-09-19 22:05

wangdu2002 写了:要E文好,直接看GNU的GCC和GDB的帮助。这方面中文资料不多,恶补E文和C++编程基础知识吧。 :em20
谢,你说的帮助,是那个man出来的吗?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#4

帖子 BigSnake.NET » 2009-09-19 22:50

这个是说那个函数找不到定义。#include <string> 看看
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#5

帖子 wangdu2002 » 2009-09-19 22:51

某是菜鸟,NN年前看过一本Basic编程。 :em03
楼主多请教楼上的大美女蛇,她对编程比较熟。 :em06
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
chenchi
帖子: 4
注册时间: 2009-08-16 22:53

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#6

帖子 chenchi » 2009-09-20 8:40

谢谢两位~
代码里已经引入了<string>,就只有和string无关的错误了,应该是链接库还有问题:
./lib/lm.a(NgramLM.o): In function `Ngram::Ngram(Vocab&, unsigned int)':
NgramLM.cpp:(.text+0x265): undefined reference to `LM::LM(Vocab&)'
NgramLM.cpp:(.text+0x33e): undefined reference to `LM::~LM()'

这个应该是代码的库的问题,和代码无关了.就是想请教一下:(.text+0x33e)是什么意思啊?
还有上面的main.cpp:(.text+0x65),(.text+0x65)是什么意思啊?
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#7

帖子 BigSnake.NET » 2009-09-21 21:49

chenchi 写了:谢谢两位~
代码里已经引入了<string>,就只有和string无关的错误了,应该是链接库还有问题:
./lib/lm.a(NgramLM.o): In function `Ngram::Ngram(Vocab&, unsigned int)':
NgramLM.cpp:(.text+0x265): undefined reference to `LM::LM(Vocab&)'
NgramLM.cpp:(.text+0x33e): undefined reference to `LM::~LM()'

这个应该是代码的库的问题,和代码无关了.就是想请教一下:(.text+0x33e)是什么意思啊?
还有上面的main.cpp:(.text+0x65),(.text+0x65)是什么意思啊?
undefined reference 就是链接时找不到函数实体
LM 类在哪? ...
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: 求助:有没有指导如何看懂G++编译错误信息的地方?

#8

帖子 poet » 2009-09-21 22:28

编译错误是基于源代码的,定位单位是行号。
连接错误是基于目标代码的,定位单位对一般人来说没意义。你不可能找到行号。

一般来说,相关的错误还是你的程序问题,只不过这类问题只有凭你自己的经验去解决。

如果程序编译出现你所列举的这几个问题,在VC++2005里面编译一样会出问题,也一样不会报出行号,与Linux没半点关系。
回复