LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 961|回复: 6

程序编译通过,运行告诉段错误,怎么回事啊? 大虾们帮忙啊!

[复制链接]
发表于 2004-10-21 14:25:56 | 显示全部楼层 |阅读模式
我用g++编译了一个程序,通过了,运行是出现错误,错误提示:段错误!我又在eclipse里编译了,也是一样的问题,错误提示:info threads:no stack,这是怎么回事啊,大虾们有遇到过这样的问题吗?是怎么解决的啊?
发表于 2004-10-21 15:21:29 | 显示全部楼层
请在编译的时候加上 -g 选项,然后用 gdb 调试一下。
 楼主| 发表于 2004-10-21 19:56:49 | 显示全部楼层
加上了,编译没有出错。我是编译开源的程序,程序肯定是没有问题的。用它自带的./configure make make install编译都没问题,我要编译的那个源程序按照上面三步最后生成了一个可执行文件,运行是一点问题都没有,而自己手动编译那个源程序(同一个源程序)通过,运行就出错了,咋回事呢?
发表于 2004-10-21 21:46:23 | 显示全部楼层
什么叫“手动”编译?如果你只编译了其中的一部分文件,某些重要的内容可能没有编译进去,当然要出问题了。
 楼主| 发表于 2004-10-21 22:24:14 | 显示全部楼层
我估计是连接时候出的问题,编译这个开源程序已经困扰了好久,开始是编译通过,link时出现错误,从错误提示来看应该是找不到依赖的库文件。开始我是这样编译的:
g++ -o server -g
-I/root/opendiameter/opendiameter-1.0.7/opendiameter-1.0.7-b/libdiameter/include
-I/root/opendiameter/opendiameter-1.0.7/opendiameter-1.0.7-b/libdiameter/test
-I/root/opendiameter/ACE/ACE_wrappers
-I/root/opendiameter/opendiameter-1.0.7/opendiameter-1.0.7-b/include
-I/root/opendiameter/opendiameter-1.0.7/opendiameter-1.0.7-b/libdiamparser
-I/root/opendiameter/ACE/ACE_wrappers/ace
-I/root/opendiameter/boost/boost-1.30.2/boost
-I/root/opendiameter/boost/boost-1.30.2/boost/function
-lxerces-c -lssl -lcrypto -lACE_SSL -lACE -ldiameter -ldiampaser
-L/usr/local/lib/opendiameter
/root/opendiameter/opendiameter-1.0.7/opendiameter-1.0.7-b/libdiameter/test/sample
_server.cxx 2> /root/debug.txt

结果出现类似的下列错误:
/tmp/ccdYmPgS.o(.text+0x20): In function
`AAASampleAuthAnswerMessage::AAASampleAuthAnswerMessage[not-in-charge](AAASampleServer&, unsigned)':
/usr/include/c++/3.2.2/bits/stl_algobase.h:517: undefined reference to
`AAASessionMessageHandler::AAASessionMessageHandler[not-in-charge](AAAApplicationCore&, unsigned)'

今天我在编译时加了-shared选项,结果编译通过了,生成了server可执行文件,在gnome-terminal里运行时,出现段错误。
我看了他的makefile文件,要的库文件我都找到并加上了。
此程序是个例子,应该不存在只编译一部分吧?
难道还是库文件连接的问题?还是什么别的原因?(源程序本身不会有问题的)
发表于 2004-10-28 13:11:57 | 显示全部楼层
用ldd server,看看能不能找到所有的库
如果能找到,则在gdb模式下运行
出错,保存core文件,然后再gdb中查看
发表于 2004-10-28 17:51:31 | 显示全部楼层
用gdb跟踪一下,看看错误是从什么地方出来的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表