首页 > 解决方案 > 目标文件不是 PIC 显示可重定位?

问题描述

我有一个小库,我在gcc没有-fPIC选项的情况下构建它,我认为这意味着生成的目标文件将不可重定位,但是当我发出file命令时,它显示可重定位,为什么?

构建命令:

gcc -DNDEBUG -g -o module.o -c module.c
file module.o


module.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), with debug_info, not stripped

标签: linuxgccfpic

解决方案


因为您正在查看目标文件,所以在它被链接成二进制文件之前。ELF 文件通常是以下四种类型之一:

核心核心文件

DYN 共享对象文件,用于库

EXEC 可执行文件,用于二进制文件

REL 可重定位文件,在链接到可执行文件之前

有关更多信息,请参阅此链接


推荐阅读