答案 0 :(得分:2)
Linux上PIC代码的情况似乎有点儿有趣。过去(在EGLIBC-2.9之前)MIPS上的所有二进制文件都应该是PIC(应用程序和共享库)。但是,为了减小应用程序的大小,开发了ABI扩展以允许非PIC可执行文件(但共享对象保持PIC,如前所述):
目前我们不建议对与职位无关的任何改变 寻址共享对象使用的约定。同样的, 与'-fpie'一起编译的与位置无关的可执行文件 - 根据需要 用于“强化”Linux发行版中的地址空间随机化 - 应继续使用现有的psABI寻址和呼叫 机制。
http://gcc.gnu.org/ml/gcc/2008-07/txt00000.txt
linux-mips.org上的wiki页面声明MIPS上的所有二进制文件必须是PIC似乎有些过时,因为Linux上最近的GCC和EGLIBC都支持非PIC可执行文件:http://www.linux-mips.org/wiki/PIC_code