Chinaunix

标题: 一进入main函数就出现段错误 [打印本页]

作者: tesing2009    时间: 2013-10-23 12:39
标题: 一进入main函数就出现段错误
Hi,
  遇到个奇怪的问题,采用g++ -share选项时,程序还没进入main时就发生了段错误,有大神指点下么。。

  代码如下,其中,aaaa没有输出。 PS:如果不用-share时,程序可以正常执行。  

  编译选项 g++ -shared -o./test main.cpp
  1. #include <iostream>
  2. using namespace std;

  3. int main(int argc, char* argv[])
  4. {
  5.   cout<<"aaaa"<<endl;
  6.   return 0;
  7. }
复制代码
怀疑是加载库的原因,但是程序运行期加载的库文件要怎么看的?
  用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