创建共享库时核心转储

Core Dumped while creating shared library

本文关键字:核心 转储 共享 创建      更新时间:2023-10-16

当我试图在我的ubuntu 14.04 64位系统上创建一个共享库时,我刚刚收到了这个错误:

g++ -Wall -g -Iinclude -c /home/pure/Schreibtisch/TestDLL/src/test.cpp -o obj/Debug/src/test.o
g++ -shared  obj/Debug/src/test.o  -o bin/Debug/TestDLL.so  
collect2: error: ld terminated with signal 6 [Abgebrochen], core dumped
/usr/bin/ld: ld: wcsrtombs.c:99: __wcsrtombs: Zusicherung »data.__outbuf[-1] == ''« nicht erfüllt.

我还试图从一个简单的类中创建一个简单共享库,该类有一个空构造函数和一个空析构函数,同样的错误也出现了。

有人能帮我修吗?如果需要更多的信息,我可以告诉他们。

pure@pure-QOSMIO-X500:~$哪个g++

/usr/bin/g++

pure@pure-QOSMIO-X500:~$g++--版本

g++(Ubuntu 4.8.2-19ubuntu1)4.8.2版权所有(C)2013自由软件基金会,股份有限公司。这是免费软件;有关复制条件,请参见来源。没有担保甚至不考虑适销性或特定用途的适用性。

这个:

LC_ALL=C g++-共享/home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o-o/home/pure/Schreibtisch/TestDLL/libTestDLL.so

现在返回:

/usr/bin/ld:/home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o:在创建共享对象时,不能使用针对"_ZTV4test"的重新定位R_X86_64_32S;使用-fPIC重新编译/home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o:添加符号时出错:值错误collect2:错误:ld返回1退出状态

/usr/bin/ld:/home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o:当制作共享对象使用-fPIC重新编译/home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o:添加错误symbol:错误值collect2:错误:ld返回1退出状态

我不知道为什么您的本地语言环境(德语)会崩溃,并且使用默认语言环境会出现有用的错误消息。然而,现在链接器本身告诉您哪里出了问题:您没有使用-fPIC编译对象代码。

PIC代表位置无关代码,对于共享库是必要的,因为它们在内存中的位置事先未知。例如,使用-fPIC生成的代码使用相对地址而不是绝对地址进行跳转。