小的是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,但是在里面又调用了那个字符串的[]方法。这个理解应该没错吧?请各位不吝指点
关键我就是找不到那个地方出现了这样的问题。。。
求助:有没有指导如何看懂G++编译错误信息的地方?
-
- 帖子: 4
- 注册时间: 2009-08-16 22:53
求助:有没有指导如何看懂G++编译错误信息的地方?
上次由 chenchi 在 2009-09-19 22:03,总共编辑 1 次。
- wangdu2002
- 帖子: 13284
- 注册时间: 2008-12-13 19:39
- 来自: 物华天宝人杰地灵
Re: 求助:有没有指导如何看懂G++编译错误信息的地方?
要E文好,直接看GNU的GCC和GDB的帮助。这方面中文资料不多,恶补E文和C++编程基础知识吧。
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
海内生明月,天涯共此夕。
--------------------吾本独!
-
- 帖子: 4
- 注册时间: 2009-08-16 22:53
Re: 求助:有没有指导如何看懂G++编译错误信息的地方?
谢,你说的帮助,是那个man出来的吗?wangdu2002 写了:要E文好,直接看GNU的GCC和GDB的帮助。这方面中文资料不多,恶补E文和C++编程基础知识吧。
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
Re: 求助:有没有指导如何看懂G++编译错误信息的地方?
这个是说那个函数找不到定义。#include <string> 看看
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
- wangdu2002
- 帖子: 13284
- 注册时间: 2008-12-13 19:39
- 来自: 物华天宝人杰地灵
Re: 求助:有没有指导如何看懂G++编译错误信息的地方?
某是菜鸟,NN年前看过一本Basic编程。
楼主多请教楼上的大美女蛇,她对编程比较熟。
楼主多请教楼上的大美女蛇,她对编程比较熟。
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
海内生明月,天涯共此夕。
--------------------吾本独!
-
- 帖子: 4
- 注册时间: 2009-08-16 22:53
Re: 求助:有没有指导如何看懂G++编译错误信息的地方?
谢谢两位~
代码里已经引入了<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)是什么意思啊?
代码里已经引入了<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++编译错误信息的地方?
undefined reference 就是链接时找不到函数实体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)是什么意思啊?
LM 类在哪? ...
^_^ ~~~
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
要理解递归,首先要理解递归。
地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
-
- 帖子: 2841
- 注册时间: 2006-09-11 22:47
Re: 求助:有没有指导如何看懂G++编译错误信息的地方?
编译错误是基于源代码的,定位单位是行号。
连接错误是基于目标代码的,定位单位对一般人来说没意义。你不可能找到行号。
一般来说,相关的错误还是你的程序问题,只不过这类问题只有凭你自己的经验去解决。
如果程序编译出现你所列举的这几个问题,在VC++2005里面编译一样会出问题,也一样不会报出行号,与Linux没半点关系。
连接错误是基于目标代码的,定位单位对一般人来说没意义。你不可能找到行号。
一般来说,相关的错误还是你的程序问题,只不过这类问题只有凭你自己的经验去解决。
如果程序编译出现你所列举的这几个问题,在VC++2005里面编译一样会出问题,也一样不会报出行号,与Linux没半点关系。