首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCC链接错误"__wcsrtombs: Zusicherung»data.__outbuf[-1] ==‘0’nichtüllt“

GCC链接错误"__wcsrtombs: Zusicherung»data.__outbuf[-1] ==‘0’nichtüllt“
EN

Stack Overflow用户
提问于 2016-02-13 13:03:12
回答 1查看 1.5K关注 0票数 1

基于this question我得到了错误信息..。

代码语言:javascript
复制
collect2: fatal error: ld terminated with signal 6 [Abgebrochen]
compilation terminated.
/usr/bin/ld: ld: wcsrtombs.c:99: __wcsrtombs: Zusicherung »data.__outbuf[-1] == '\0'« nicht erfüllt.

...when试图链接共享库,但设置LC_ALL=C不能解决我的情况下的问题!

我在德国LinuxMint17.3(肉桂)上。我的项目是用CMake 2.8.4 (本机存储库)构建的。编译器是g++ 5.3.1 (Ubuntu存储库)。

所有源的编译命令如下所示:

代码语言:javascript
复制
/usr/bin/c++   -D_USE_MATH_DEFINES -Dfluag_EXPORTS -g -fPIC -I/home/youka/Schreibtisch/Projekte/FLuaG/build/src -I/usr/include/luajit-2.0 -I/usr/local/include    -Wall -Wextra -pedantic -Wredundant-decls -Wunreachable-code -Wmissing-include-dirs -Wswitch-enum -Wno-missing-field-initializers -std=c++11 -mmmx -o CMakeFiles/fluag.dir/main/FLuaG.cpp.o -c /home/youka/Schreibtisch/Projekte/FLuaG/src/main/FLuaG.cpp

导致错误的链接命令:

代码语言:javascript
复制
/usr/bin/c++  -fPIC -g   -shared -Wl,-soname,libfluag.so -o libfluag.so CMakeFiles/fluag.dir/lualibs/utf8.cpp.o CMakeFiles/fluag.dir/lualibs/mathx.cpp.o CMakeFiles/fluag.dir/lualibs/regex.cpp.o CMakeFiles/fluag.dir/lualibs/png.cpp.o CMakeFiles/fluag.dir/lualibs/geometry.cpp.o CMakeFiles/fluag.dir/lualibs/tablex.cpp.o CMakeFiles/fluag.dir/lualibs/filesystem.cpp.o CMakeFiles/fluag.dir/lualibs/tgl.cpp.o CMakeFiles/fluag.dir/lualibs/font.cpp.o CMakeFiles/fluag.dir/interfaces/vapoursynth.cpp.o CMakeFiles/fluag.dir/interfaces/public.cpp.o CMakeFiles/fluag.dir/main/FLuaG_image.cpp.o CMakeFiles/fluag.dir/main/FLuaG.cpp.o -Wl,-Bstatic -lluajit-5.1 -Wl,-Bdynamic -lGLEW /usr/local/lib/libglfw3.a -lGL -lpng -lz

在Windows上用MinGW64编译此项目是可行的。发布或调试构建,有或没有SIMD,等等都没有区别。

错误消息告诉我,在文件wcsrtombs.c (链接libgcc)第99行中,内存比较data.__outbuf[-1] == '\0'没有得到保证.这让我很困惑。

EN

回答 1

Stack Overflow用户

发布于 2016-02-21 14:14:30

将系统语言设置为英语后,错误消息突然变得有意义:

代码语言:javascript
复制
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libluajit-5.1.a(ljamalg.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libluajit-5.1.a: error adding symbols: Bad value

问题是-Wl,-Bstatic -lluajit-5.1。我链接到.a文件,该文件被CMake期望是一个静态库。改为.so解决了这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35380213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档