gcc 4.5.3-1.3; MIPS32
您好, 我正在尝试构建一个小于32K的小代码。我希望代码是位置无关代码(PIC),所以我可以加载到任何内存位置并运行。所以我在编译C文件时指定了-fPIC。 但是当我检查生成的反汇编代码时,我发现有
9fc01f24: 00000000 nop
9fc01f28: 0ff00445 jal 9fc01114 <_writeasm>
9fc01f2c: 24040076 li a0,118
9fc01f30: 0ff00445 jal 9fc01114 <_writeasm>
9fc01f34: 24040065 li a0,101
9fc01f38: 0ff00445 jal 9fc01114 <_writeasm>
指示。 “jal”表示这些代码不是PIC,PIC不应该跳转到绝对地址。对?我期待bal 0x 00001234。
我还尝试了-mshared -fPIC
选项和-mshared -fpic
,但它们会生成相同的二进制代码。我想知道为什么-fPIC不起作用?
是否有专家可以帮助我?
提前致谢。
冼