【问题标题】:Compilation flags to build runtime on linux machines在 linux 机器上构建运行时的编译标志
【发布时间】:2021-02-27 18:01:00
【问题描述】:

哪些编译器标志用于构建标准 c/c++ 库,例如 glibclibstdc++? 它们在 debian、fedora、archlinux 等发行版中是否相同?

在 debian 机器上有 dpkg-buildflags,但我不确定它们是否被关键运行时库覆盖。

【问题讨论】:

    标签: c++ c linux debian dpkg


    【解决方案1】:

    一个常见的因素是-O2,其中-O2 -g(启用gdb 调试符号)是最常见的。 -O2 绝对是维护者所期望的优化级别,假设包应该被编译。

    如果您查看 Debian 源代码包(或 -debian.tar.* 压缩包)中的 debian/rules,您通常会发现 HOST_CFLAGSHOST_CXXFLAGS 描述了在源代码包为使用 Debian 工具构建。

    这在例如man 1 dpkg-buildflags 手册页中有记录:“供应商设置的默认值包括 -g 和默认优化级别(通常为 -O2,如果 DEB_BUILD_OPTIONS 环境变量定义 noopt,则为 -O0 )。”

    在 Debian 之外,Gentoo recommends -O2 -pipe-march= 用于当前架构。 (-pipe 选项告诉 GCC 在构建期间使用管道而不是临时文件,这通常更快,但在构建期间使用更多 RAM。它对编译的二进制文件没有影响。)

    OpenWRT 这样的嵌入式系统经常使用-Os 来生成更小的二进制文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2011-07-03
      • 2012-03-24
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多