位置相关代码

时间:2017-04-27 06:01:04

标签: gcc sparc fpic

我使用的是使用sparc v8架构的处理器。我想编译我的可执行文件,使每个函数调用是绝对地址。使用-fPIC选项生成位置无关代码,这个标志有反转吗?

1 个答案:

答案 0 :(得分:1)

大多数GCC选项都包含-fxxx-fno-xxx个变体。

您可以轻松测试fPIC是否属于这种情况。只需编译一些简单的测试:

int main () { printf ("Hello, world!\n"); }

使用命令行:

gcc -fPIC test.c -S

并在汇编程序中查找PLT相对调用

    call    puts@PLT

现在尝试以反向取消此选项:

gcc -fPIC test.c -S -fno-PIC

你会看到,PLT相对的呼叫已经消失,所以一切正常。