【问题标题】:How to ignore compiler flags automatically added with buildrpm如何忽略 buildrpm 自动添加的编译器标志
【发布时间】:2018-04-05 23:43:50
【问题描述】:

我正在尝试使用 buildrpm 构建一个包。我的问题是,当make 正常运行时,我编译了一个故意易受攻击的C 程序,作为使用make check 测试主要代码(模糊器)的示例。然而,当我尝试构建 rpm 时,即使没有安装这些易受攻击的程序(因为它们只是测试),rpmbuild -v -bb --clean SPECS/ansvif.spec 仍然会强制它使用 -Werror=format-security 编译它,这会导致构建失败。有没有一种简单的方法来解决这个问题——除了尝试重写 Makefile.am 之外,如果可能的话,它会被 buildrpm 传递的某个标志省略?如果可能的话,我正在寻找这个问题的适当解决方案,而不是一些 hacky。

源码在https://github.com/oxagast/ansvif

【问题讨论】:

  • 跳过make test 部分,它应该可以工作。或者在构建 RPM 时避免编译测试程序。

标签: c++ c makefile rpm rpmbuild


【解决方案1】:

您可以在规范文件的顶部尝试“%global _hardened_build 0”。

【讨论】:

    【解决方案2】:

    我想到了另外两个选项:

    1. 在运行 rpmbuild 之前,导出您自己的 C_FLAGS。它可能会对您有所帮助,但这取决于您的 rpmbuild 的设置。

    2. 在 rpmbuild 中使用 --define 来声明您自己的 optflags 与 builf 一起使用。例如 rpmbuild -v -bb --clean --define 'optflags -foo -bar -foobar' ansvif.spec

    【讨论】:

    • 请正确格式化您的答案并解释为什么您的解决方案是正确的,而不仅仅是说明要做什么。
    猜你喜欢
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2019-02-02
    相关资源
    最近更新 更多