日期:2014-05-16  浏览次数:20968 次

关于动态链接库 segmentation fault
我将多个cpp文件编译成o文件,命令如下:

g++ -fPIC -c  c1.cpp
g++ -fPIC -c  c2.cpp
g++ -fPIC -c  c3.cpp

然后将多个o文件, 链接成动态链接库 so 文件,命令如下:

g++  -shared  c1.o  c2.o  c3.o  -o SocketExt.so

结果,测试时,发现只要是调用了跨文件的函数,就会报错:

segmentation fault

请问,如何解决呢? 

------解决方案--------------------
你尝试用-static 试试可以吗?如果不行的话,你可以利用分阶段编译,因为一般的程序的编译过程都是分为:预处理、编译、汇编、链接这四个步骤的,对应到选项分别利用-E,-S,-c和 -O,分段接编译定位问题看看。
------解决方案--------------------
memory fault 是代码引起的。
与跨文件调用没有关系。
------解决方案--------------------
同上。


代码本身的问题。

gdb调试下。
------解决方案--------------------
编译时带-g参数,用gdb调。