c++ - 如何在 Linux 中查看 .o 文件的信息和编译器标志?

标签 c++ boost command centos

我使用的是 CentOS 6.02 64 位。我想查看 .o 文件中的信息和使用的编译器标志。有什么命令或方法可以看到吗?我已经使用 objdump 查看了 .a 文件的架构。但是看不到.o 文件的信息。

最佳答案

没有通用的方法可以从目标文件中提取编译器标志。您可以通过使用和不使用像 -fverbose-asm(仅影响 asm 生成的 gcc 标志)这样的无操作开关编译两次并比较对象来看到这一点——它们将是相同的。然而,有一些特定于编译器的扩展允许您在编译期间插入它们,例如-frecord-gcc-switches 在较新版本的 gcc 中,它放置了 .GCC.command.line 部分中使用的标志。不同的编译器也将各种信息插入到 .comment 部分,例如我用 gcc 4.7.2 编译显示:

$objdump -s -j.comment <objfile>

objfile:     file format elf64-x86-64

Contents of section .comment:
 0000 00474343 3a202847 4e552920 342e372e  .GCC: (GNU) 4.7.
 0010 3200                                 2.

您当然可以使用与 .a 文件相同的方式获取架构,使用 objdump -f

关于c++ - 如何在 Linux 中查看 .o 文件的信息和编译器标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868105/

相关文章:

c++ - 'int accidents[5]' 的声明隐藏参数错误

c++ - 在windows下用mingw编译c libusbmuxd编译

c++ - Blob 内数据的对齐和填充

c++ - 从 Rcpp 调用 R 函数的替代方法

c++ - boost condition_variable 等待多个锁

c++ - Boost 与 .Net 随机数生成器

c++ - 缩小/扩大带孔多边形的轮廓

hive - hive beeline 命令历史文件的路径是什么?

linux - unix复制/下载进度状态更新

c# - 如何使用 MVVM 在 WPF 中将命令附加到事件 - DataGrid 选择更改为更新显示在 TextBlock 中的行数