【发布时间】:2014-09-04 12:15:47
【问题描述】:
当我尝试在我的 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@pure-QOSMIO-X500:~$ which g++
/usr/bin/g++
pure@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: 重定位 R_X86_64_32S 反对 `_ZTV4test' 制作共享对象时不能使用;使用 -fPIC 重新编译 /home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o:添加符号时出错:值错误 collect2:错误:ld 返回 1 个退出状态
【问题讨论】:
-
用
gdb分析核心文件。 -
尝试在英文系统上构建相同的源代码。
-
是的,请在开始编译过程之前执行类似 export LC_ALL=C (或对您的 shell 类似)之类的操作。
-
您能否告诉我们您使用的是库存编译器和 binutils,还是安装了自定义版本?请执行
which g++和g++ --version并告诉我们输出结果。 -
@FlorianKeßeler 是否真的需要预先将语言环境设置为 C 才能使用 g++ 成功编译共享库?这是一个笑话还是只是旧编译器中的一个错误?