Chinaunix
标题:
一进入main函数就出现段错误
[打印本页]
作者:
tesing2009
时间:
2013-10-23 12:39
标题:
一进入main函数就出现段错误
Hi,
遇到个奇怪的问题,采用g++ -share选项时,程序还没进入main时就发生了段错误,有大神指点下么。。
代码如下,其中,aaaa没有输出。 PS:如果不用-share时,程序可以正常执行。
编译选项 g++ -shared -o./test main.cpp
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
cout<<"aaaa"<<endl;
return 0;
}
复制代码
怀疑是加载库的原因,但是程序运行期加载的库文件要怎么看的?
用ldd查看加了-shared 和没有-shared时的库文件是一样了。
纠结了好久,实在分析不出什么问题了,求指点啊,多谢~
作者:
w_anthony
时间:
2013-10-23 13:07
LZ你到底知道-shared是做什么用的吗?你为什么要加-shared?加了这个编译出来的是so文件,怎么可能可以直接执行?
作者:
tesing2009
时间:
2013-10-23 13:19
回复
2#
w_anthony
我以为-shared 是指示动态链接需要的库,结果不是么。。
原来-shared是表示生成共享库啊,流泪了。。。
刚搜索了下,-static才是静态链接需要的库么,这个对吧。。。
感谢兄弟,我在这个问题上浪费了好多时间。。。
作者:
w_anthony
时间:
2013-10-23 14:14
你是想链接一个so吗?
如果这个so是libxxx.so,那么应该是"-Llibxxx.so所在目录 -lxxx"这个样子,如果libxxx.so在当前目录,可以"-L. -lxxx"
作者:
yulihua49
时间:
2013-10-23 15:06
tesing2009 发表于 2013-10-23 12:39
Hi,
遇到个奇怪的问题,采用g++ -share选项时,程序还没进入main时就发生了段错误,有大神指点下么。。 ...
静态类的构造函数出错。
作者:
tesing2009
时间:
2013-10-23 15:52
回复
4#
w_anthony
好的,多谢~
作者:
tesing2009
时间:
2013-10-23 15:53
回复
5#
yulihua49
没有静态类的,写了一个最简单的main测试了。
w_anthony的回答是正确的
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2