英语法语西班牙语

Ad


OnWorks 网站图标

dpkg-buildflags - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 dpkg-buildflags

这是 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标志. 这将警告不正确的格式字符串
使用,并且在以表示可能的方式使用格式函数时将失败
安全问题。 目前,这警告调用 的printfscanf函数 功能
其中格式字符串不是字符串文字并且没有格式参数,
如在 打印(富); 而不是 printf("%s", 富); 这可能是一个安全漏洞,如果
格式字符串来自不受信任的输入并包含“%n”。

强化
此设置(默认启用)添加 -D_FORTIFY_SOURCE=2CPPF标志. 编码期间
编译器知道大量关于缓冲区大小的信息(其中
可能),并尝试替换不安全的无限长度缓冲区函数调用
有长度限制的。 这对于旧的、粗糙的代码特别有用。
此外,可写内存中包含 '%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


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad