linux - 目标文件不是 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
解决方案
因为您正在查看目标文件,所以在它被链接成二进制文件之前。ELF 文件通常是以下四种类型之一:
核心核心文件
DYN 共享对象文件,用于库
EXEC 可执行文件,用于二进制文件
REL 可重定位文件,在链接到可执行文件之前
有关更多信息,请参阅此链接
推荐阅读
- angular - 使用响应式表单从包含在强制对象中的字段发送值
- java - Pyspark - java.lang.OutOfMemoryError:作为独立应用程序运行时,但作为 docker 运行时没有错误
- android - 以编程方式添加的 Android EditText 无法聚焦
- apache-kafka - 卡夫卡对象反序列化器?
- vba - VBA 运算符不喜欢
- python - 为什么 __enter__ 引发异常时不执行 __exit__
- regex - 如何获取跳过前 5 个字符的最后一个文件夹?
- machine-learning - 如何处理 GMM 模型中的分类和非欧几里得数据?
- python - 在 Pandas 中重用打开的数据文件
- amazon-elastic-beanstalk - 使用 Puma 平台在 AWS Elastic Beanstalk Ruby 上禁用 Puma