这是 dpkg-buildflags 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
dpkg-buildflags - 返回要在包构建期间使用的构建标志
概要
dpkg-构建标志 [选项...] [命令]
商品描述
dpkg-构建标志 是一种检索编译标志以在 Debian 构建期间使用的工具
包。 默认标志由供应商定义,但可以扩展/覆盖
在几个方面:
1.全系统与 /etc/dpkg/buildflags.conf;
2.对于当前用户 $XDG_CONFIG_HOME/dpkg/buildflags.conf 哪里
$XDG_CONFIG_HOME 默认为 $HOME/.config;
3. 由用户临时设置环境变量(见章节 环境);
4. 由包维护者动态设置环境变量
Debian/规则 (见节 环境).
配置文件可以包含两种类型的指令:
设置 旗 折扣值
覆盖名为的标志 旗 要有价值 折扣值.
跳闸 旗 折扣值
从名为的标志中剥离 旗 中列出的所有构建标志 折扣值.
附加 旗 折扣值
扩展名为的标志 旗 通过附加中给出的选项 折扣值. 一个空间是
如果标志的当前值非空,则附加到附加值。
PREPEND 旗 折扣值
扩展名为的标志 旗 通过在前面给出的选项 折扣值. 一个空间是
如果标志的当前值非空,则附加到前置值。
配置文件可以在以散列 (#) 开头的行中包含注释。 空的
行也被忽略。
指令
- 倾倒 将所有编译标志及其值打印到标准输出。 它打印了一面旗帜
每行与其值用等号分隔(“旗=折扣值”)。 这是
默认操作。
- 列表 打印当前供应商支持的标志列表(每行一个)。 见
支持的 旗帜 部分了解有关它们的更多信息。
- 地位
显示任何有助于解释行为的信息
dpkg-构建标志 (自 dpkg 1.16.5 起):相关环境变量,当前
供应商,所有功能标志的状态。 还打印生成的编译器标志
他们的起源。
这旨在从 Debian/规则,以便构建日志保持清晰
使用的构建标志的跟踪。 这对于诊断与以下相关的问题很有用
他们。
--出口=格式
打印到标准输出命令,可用于导出所有编译
某些特定工具的标志。 如果 格式 未给出值, sh 假设。
仅包含以大写字符开头的编译标志,其他
假设不适合环境。 支持的格式:
sh 用于设置和导出所有编译标志的 Shell 命令
环境。 标记值被引用,因此输出已准备好
由外壳评估。
CMDLINE
传递给构建程序的命令行以使用所有
编译标志(自 dpkg 1.17.0 起)。 标志值在 shell 中引用
语法。
配置
这是一个旧的别名 CMDLINE.
使 制作指令以设置和导出所有编译标志
环境。 输出可以写入生成文件片段并进行评估
用一个 包括 指令。
- 得到 旗
在标准输出上打印标志的值。 如果标志已知,则以 0 退出
否则以 1 退出。
- 起源 旗
打印返回的值的来源 - 得到. 如果标志为 0,则退出
已知,否则以 1 退出。原点可以是以下值之一:
供应商 返回供应商设置的原始标志;
系统 该标志由系统范围的配置设置/修改;
用户 该标志由用户特定的配置设置/修改;
ENV 该标志由特定于环境的配置设置/修改。
--查询功能 区
打印为给定区域启用的功能(自 dpkg 1.16.2 起)。 唯一的
目前公认的关于 Debian 和衍生品的领域是 qa, 重复性, 消毒
和 硬化,见 特点 区 部分了解更多详情。 以 0 退出,如果
区域是已知的,否则以 1 退出。
输出采用 RFC822 格式,每个功能有一个部分。 例如:
特点:馅饼
启用:否
功能:堆栈保护器
启用:是
- 帮帮我 显示使用信息并退出。
- 版
显示版本并退出。
支持的 旗帜
标志 C 编译器的选项。 供应商设置的默认值包括 -g 和
默认优化级别(-氧气 通常,或 -氧气 如果 DEB_BUILD_OPTIONS
环境变量定义 没有选择).
CPPF标志
C 预处理器的选项。 默认值:空。
CXX标志
C++ 编译器的选项。 与...一样 标志.
对象标志
Objective C 编译器的选项。 与...一样 标志.
OBJCXX标志
Objective C++ 编译器的选项。 与...一样 CXX标志.
GCJ标志
GNU Java 编译器 (gcj) 的选项。 的一个子集 标志.
旗帜 Fortran 77 编译器的选项。 的一个子集 标志.
FCF标志
Fortran 9x 编译器的选项。 与...一样 旗帜.
低频标志
链接可执行文件或共享对象时传递给编译器的选项(如果
直接调用链接器,然后 -Wl 和 , 必须从这些选项中删除)。
默认值:空。
如果需要(例如支持其他
语言)。
特点 区
每个区域功能都可以在 DEB_BUILD_OPTIONS 和
DEB_BUILD_MAINT_OPTIONS 环境变量的区域值带有 '+'和'-' 修饰符。
例如,要启用 硬化 “馅饼”功能并禁用您的“强化”功能
可以做到这一点 Debian/规则:
导出 DEB_BUILD_MAINT_OPTIONS=hardening=+pie,-fortify
特别之处 所有 (在任何区域都有效)可用于启用或禁用所有区域
同时具有特征。 从而禁用所有 硬化 区域和使能
只能通过以下方式实现“格式化”和“强化”:
导出 DEB_BUILD_MAINT_OPTIONS=hardening=-all,+format,+fortify
qa
可以使用几个编译时选项(如下详述)来帮助检测程序中的问题。
源代码或构建系统。
错误 此设置(默认情况下禁用)添加了任何可靠检测到的警告选项
有问题的源代码。 这些警告是致命的。
金丝雀 此设置(默认禁用)向构建标志添加了虚拟金丝雀选项,因此
可以检查构建日志以了解构建标志如何传播并允许
发现任何正常构建标志设置的遗漏。 目前唯一支持的
旗帜是 CPPF标志, 标志, 对象标志, CXX标志 和 OBJCXX标志 标志设置为
-D__DEB_CANARY_旗_随机 ID__及 低频标志 设置 -Wl,-z,deb-金丝雀-随机 ID.
消毒
几个编译时选项(详见下文)可用于帮助清理结果
防止内存损坏、内存泄漏、释放后使用、线程数据竞争和
未定义的行为错误。
地址
此设置(默认禁用)添加 -fsanitize=地址 至 低频标志 和
-fsanitize=地址 -fno-省略帧指针 至 标志 和 CXX标志.
绪 此设置(默认禁用)添加 -fsanitize=线程 至 标志, CXX标志 和
低频标志.
泄漏 此设置(默认禁用)添加 -fsanitize=泄漏 至 低频标志. 它得到
自动禁用,如果 地址 或者 绪 功能已启用,如
他们暗示它。
未定义
此设置(默认禁用)添加 -fsanitize=未定义 至 标志, CXX标志
和 低频标志.
硬化
几个编译时选项(如下详述)可用于帮助强化结果
防止内存损坏攻击的二进制文件,或在此期间提供额外的警告消息
汇编。 除非如下所述,默认情况下为以下架构启用这些
支持他们。
格式 此设置(默认启用)添加 -格式 -Werror=格式安全 至 标志,
CXX标志, 对象标志 和 OBJCXX标志. 这将警告不正确的格式字符串
使用,并且在以表示可能的方式使用格式函数时将失败
安全问题。 目前,这警告调用 的printf 和 scanf函数 功能
其中格式字符串不是字符串文字并且没有格式参数,
如在 打印(富); 而不是 printf("%s", 富); 这可能是一个安全漏洞,如果
格式字符串来自不受信任的输入并包含“%n”。
强化
此设置(默认启用)添加 -D_FORTIFY_SOURCE=2 至 CPPF标志. 编码期间
编译器知道大量关于缓冲区大小的信息(其中
可能),并尝试替换不安全的无限长度缓冲区函数调用
有长度限制的。 这对于旧的、粗糙的代码特别有用。
此外,可写内存中包含 '%n' 的格式字符串被阻止。 如果
应用程序依赖于这样的格式字符串,它需要解决。
请注意,要使此选项生效,还必须使用以下命令编译源
-氧气 或更高。 如果环境变量 DEB_BUILD_OPTIONS 包含 没有选择, 然后
强化 由于 glibc 2.16 发出新警告,支持将被禁用
然后。
堆栈保护器
此设置(如果未使用 stackprotectorstrong 时默认启用)添加
-fstack-保护器 --param=ssp-缓冲区大小=4 至 标志, CXX标志, 对象标志,
OBJCXX标志, GCJ标志, 旗帜 和 FCF标志. 这增加了对堆栈的安全检查
覆盖。 这使得许多潜在的代码注入攻击中止
情况。 在最好的情况下,这会将代码注入漏洞转化为拒绝
服务或进入非问题(取决于应用程序)。
此功能需要链接到 glibc(或其他
__stack_chk_fail),因此在构建时需要禁用 -nostdlib or
-f独立 或类似的。
堆栈保护器强
此设置(默认启用)添加 -fstack-protector-强 至 标志,
CXX标志, 对象标志, OBJCXX标志, GCJ标志, 旗帜 和 FCF标志. 这是一个更强
的变体 堆栈保护器,但没有显着的性能损失。
禁用 堆栈保护器 还将禁用此设置。
此功能的要求与 堆栈保护器,此外还有
需要 gcc 4.9 及更高版本。
雷罗 此设置(默认启用)添加 -Wl,-z,relro 至 低频标志. 节目中
加载,链接器需要写入几个 ELF 内存部分。 这标志
加载程序将这些部分转为只读,然后再将控制权交给
程序。 最值得注意的是,这可以防止 GOT 覆盖攻击。 如果这个选项是
残疾人, 绑定 也会变得残疾。
绑定
此设置(默认禁用)添加 -Wl,-z,现在 至 低频标志. 在程序加载期间,
解析所有动态符号,允许将整个 PLT 标记为 read-
仅(由于 雷罗 以上)。 如果出现以下情况,则无法启用该选项 雷罗 是不是
启用。
馅饼 此设置(默认禁用)添加 -fPIE 至 标志, CXX标志, 对象标志,
OBJCXX标志, GCJ标志, 旗帜 和 FCF标志及 -fPIE -馅饼 至 低频标志. 位置
需要独立的可执行文件来利用地址空间布局
随机化,某些内核版本支持。 虽然 ASLR 已经可以
对堆栈和堆(brk 和 mmap)中的数据区域强制执行,代码区域必须
编译为与位置无关的。 共享库已经这样做了(-fPIC),所以
它们会自动获得 ASLR,但二进制 .text 区域需要构建 PIE 才能获得
反光镜。 发生这种情况时,ROP(面向返回的编程)攻击要困难得多
因为在内存损坏期间没有可以反弹的静态位置
攻击。
这不兼容 -fPIC 所以在构建共享时必须小心
对象。
此外,由于 PIE 是通过通用寄存器实现的,一些架构
(最值得注意的是 i386)在非常文本段中可以看到高达 15% 的性能损失-
繁重的应用程序工作负载; 大多数工作负载看到不到 1%。 架构与
更通用的寄存器(例如 amd64)认为最坏情况下的惩罚并不高。
重复性
下面详述的编译时选项可用于帮助提高构建重现性
或在编译期间提供额外的警告消息。 除以下说明外,这些
默认情况下为支持它们的架构启用。
永恒
此设置(默认启用)添加 -W日期时间 至 CPPF标志. 这会导致
警告时 __时间__, __日期__ 和 __时间戳__ 使用宏。
环境
有两组环境变量做同样的操作,第一组
(DEB_旗_op) 不应在其中使用 Debian/规则. 它适用于任何想要的用户
使用不同的构建标志重建源包。 第二套
(DEB_旗_维护_op) 应该只用于 Debian/规则 由包维护者更改
生成的构建标志。
DEB_旗_放
DEB_旗_MAINT_SET
此变量可用于强制为给定的返回值 旗.
DEB_旗_跳闸
DEB_旗_MAINT_STRIP
此变量可用于提供一个空格分隔的选项列表,这些选项将被
从给定返回的标志集中剥离 旗.
DEB_旗_附加
DEB_旗_MAINT_APPEND
此变量可用于将补充选项附加到返回的值
给定的 旗.
DEB_旗_准备
DEB_旗_MAINT_PREPEND
此变量可用于在返回值前添加补充选项
对于给定的 旗.
DEB_BUILD_OPTIONS
DEB_BUILD_MAINT_OPTIONS
用户或维护者可以使用这些变量来禁用/启用各种区域
影响构建标志的功能。 这 DEB_BUILD_MAINT_OPTIONS 变量覆盖
中的任何设置 DEB_BUILD_OPTIONS 特色领域。 见 特点 区 部分
了解详情。
使用 onworks.net 服务在线使用 dpkg-buildflags