tensorflow - GCC 链接错误,重定位被截断以适应:GPREL16 针对符号错误
问题描述
我目前正在交叉编译 tensorflow r1.9。宿主系统是ubuntu 18.04,目标系统是sw26010(一个基于alpha指令集的中文CPU)。交叉编译器基于 GCC 5.3。
由于某些操作系统限制,我必须将所有库静态链接到 tensorflow。libstdc++.a 和 libpthread.a。被包含在内。
经过一些配置,我可以成功编译所有目标文件。(将“//conditions:default”:[],添加到nsync BUILD文件,并将sw2 CPU宏添加到双重转换BUILD文件)。但是,我无法成功链接所有库文件和目标文件。
这是错误消息。
/home/qh5/swgcc530/gcc-5.3.0/libstdc++-v3/src/c++98/ios_init.cc:140:(.text._ZNSt8ios_base4InitD2Ev+0xf4):重定位被截断以适应:GPREL16反对符号`std: :wcerr' 在 /usr/sw-mpp/swcc/swgcc530-tools/usr/sw_64sw2-unknown-linux-gnu/lib/libstdc++.a(globals_io.o) 的 .bss._ZSt5wcerr 部分中定义
这是用于 tensorflow bazel 的 CROSSTOOL。 hastebin 上的 CROSSTOOL 我尝试使用compiler_flag: "-msmall-data"和compiler_flag: "-fpic"来修复错误,但失败了。
解决方案
最后,通过联系编译团队解决了这个错误。如果你有同样的问题。请向中国编译器团队寻求帮助并更新您的编译器。
推荐阅读
- javascript - 在 Javascript 中调用 Flask-Wtform 提交按钮
- php - 根据单击的复选框进行过滤
- java - 我如何比较java中的两个JSONArray?
- javascript - 外部点击在angularjs中不起作用
- neighbours - 如何获取地图中特定点周围的一组最近点?
- vb.net - SQL UPDATE 语句 - 使用 WHERE 的列名无效
- reactjs - 如何防止在 ReactJS 的 URL 中添加字符串?
- c# - newtonsoft.json FileNotFoundException System.Runtime.Serialization.Primitives
- ethereum - 以太坊 Dapps 是否应该考虑合约的存储限制?
- android - 从片段捕获图像时从不调用 onActivityResult