【问题标题】:Is there a way to find out the compiler options that were used when a .so library was compiled on Linux?有没有办法找出在 Linux 上编译 .so 库时使用的编译器选项?
【发布时间】:2012-03-09 09:26:36
【问题描述】:

我需要知道我的库是如何编译的,即使用了哪些编译器选项?具体来说,是否经过优化编译,以及其他选项很少。

有没有办法在linux、x86_64平台上提取这些信息?

【问题讨论】:

  • 那么给定一个现有的 .so 文件,你想知道它是如何编译的吗?请记住,一个库可能是从多个源文件生成的,每个源文件都可能使用不同的选项进行编译。
  • 了解每个源文件编译的选项会很有帮助..
  • 您使用的是-frecord-gcc-switches 还是-grecord-gcc-switches?这些选项的存在是有充分理由的。

标签: c++ linux g++


【解决方案1】:

我不相信自动检测编译器选项是可能的;至少不是便携式的。

您可以做的是更改您的构建脚本(例如您的 Makefile)以自动将定义与优化参数(-D 标志)一起附加。

【讨论】:

    【解决方案2】:

    如果库来自您使用的 Linux 发行版,您可以查看包的来源,例如对于基于 Debian 的系统:apt-get source PACKAGENAME,获取构建参数。

    【讨论】:

    • 同样,如果它来自基于 RPM 的发行版,您可以下载可能包含构建选项的 SRPM。
    猜你喜欢
    • 2011-01-19
    • 2016-03-29
    • 1970-01-01
    • 2014-02-10
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多