我使用的是使用sparc v8架构的处理器。我想编译我的可执行文件,使每个函数调用是绝对地址。使用-fPIC选项生成位置无关代码,这个标志有反转吗?
答案 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相对的呼叫已经消失,所以一切正常。