c++ - c/c++ 将位置相关对象转换为位置无关对象

标签 c++ c gcc fpic

我有一些带有调试符号的已编译目标文件,但无法访问源代码。

有什么方法可以把这个文件转换成位置独立的吗?

据我所知,“-fPIC”标志使所有跳转都是相对的。我想知道是否有调试符号足以修复此跳转并创建一个 PIC 二进制文件。

如果不是请告诉我为什么这个操作不可能完成。

最佳答案

我认为这个问题是平台问题而不是特定于编译器的问题,因为不同的平台实现 PIC 代码的方式不同。

尽管如此,我不知道有哪个平台可以使用简单的工具将常规代码转换为与位置无关的代码。这是必须在编译/代码生成时做出的决定。可能实现您的目标的唯一方法是反汇编代码并将每个绝对代码/数据引用修改为相对寻址。

简短的回答是:不,(实际上)不可能。

关于c++ - c/c++ 将位置相关对象转换为位置无关对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29754606/

相关文章:

在GCC5.2.0中编译Cilk plus

c - 让凯撒密码环绕起来

c - 是否可以创建变量名称数组?

C++ 函数属性指示返回值的生命周期与参数相同

C++ 使用 RAII 创建数组

C - 如何将 strtok() 返回的标记存储到 char 指针数组中?

c++ - gcc 的 asm volatile 是否等同于递归的 gfortran 默认设置?

c++ - 如何使用构造函数初始化单链表的值

python - 通过 Flask API 将 Arduino 传感器值发布到本地 Sqlite 数据库

c++ - 使用指针或引用动态分配内存