c++ - DT_TEXTREL 是什么意思,如何解决?
问题描述
我正在开发一个 C++ 项目,它使用foo.a
在旧的 Intel 32 位架构(使用gcc-4 )上编译的(遗留)静态库(让我们命名它)。我没有这个库的源代码,所以我无法重建它。
现在我必须使用gcc-6.5将整个项目移植到基于x86-64 linux 的环境中,并且在第一阶段,我尝试使用flag 编译所有内容,以便不更改任何内容。-m32
编译阶段进展顺利,但在链接阶段我收到此警告:
ld: (foo.a)(x.o) relocation of read-only section '.ro-data'
ld: warning: creating a DT_TEXTREL in object.
无论如何,可执行文件已创建,但此时我无法对其进行测试(是的,我知道,这似乎是一场灾难!)。
我读到了一些关于在构建时缺少-fPIC
标志以及在旧的32 位架构上该选项是不必要foo.a
的事实。-fPIC
我的问题是:
- 是什么
DT_TEXTREL
?我找不到关于这个术语的任何文档,只有手册上的片段。 - 如何在不重新编译的情况下解决这个问题
foo.a
? - 如果(问题 2)无法实现,我应该通过忽略此警告对最终可执行文件期待什么问题?
谢谢!
解决方案
推荐阅读
- redis - statefulset 和 headless service 是如何工作的-K8s
- javascript - 包含从 npm 下载到 app.js 的 javascript 文件
- image - 更改 5 类图像分类器的代码
- azure - 为视频处理场景选择适用于 azure 的最佳解决方案
- phpstorm - PhpStorm 这个背景色是什么?
- matlab - 查找分配给结构中字段的数据条目
- android - 安卓应用出现黑屏
- javascript - 如何禁用 redux-form 中的字段?
- scala - 如何添加最常见的“url”和相应的“类型”?
- r - 如果任何元素与任何其他行的元素匹配,则R组合矩阵行