当前位置: 技术问答>linux和unix
关于动态链接库 segmentation fault
来源: 互联网 发布时间:2017-03-30
本文导语: 我将多个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 结果,...
我将多个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
请问,如何解决呢?
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调试下。
代码本身的问题。
gdb调试下。
|
编译时带-g参数,用gdb调。