核心在创建共享库时被转储

时间:2014-09-04 12:15:48

标签: c++ linux ubuntu g++

当我尝试在我的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] == '\0'« nicht erfüllt.

我还尝试从一个带有空构造函数和空析构函数的简单类创建一个简单的共享库,同样的错误来了。

任何人都可以帮我解决这个问题吗? 如果需要更多信息,我可以告诉他们。

纯@ pure-QOSMIO-X500:〜$ g ++

  

的/ usr /斌/克++

纯@ pure-QOSMIO-X500:〜$ g ++ --version

  

g ++(Ubuntu 4.8.2-19ubuntu1)4.8.2      版权所有(C)2013 Free Software Foundation,Inc。      这是免费软件;查看复制条件的来源。没有      保证;甚至不适用于适销性或特定用途的适用性。

而且:

  

LC_ALL = C g ++ -shared /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退出状态

1 个答案:

答案 0 :(得分:1)

  

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

我不知道你为什么会遇到使用本地语言环境(德语)的崩溃以及使用默认语言环境的有用错误消息。但是,现在链接器本身会告诉您错误的原因:您没有使用-fPIC编译目标代码。

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