英語フランス語スペイン語

Ad


OnWorksファビコン

dpkg-buildflags - クラウドでオンライン

Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーター上の OnWorks 無料ホスティング プロバイダーで dpkg-buildflags を実行します。

これは dpkg-buildflags コマンドで、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できます。

プログラム:

NAME


dpkg-buildflags - パッケージのビルド中に使用するビルド フラグを返します

SYNOPSIS


dpkg-buildflags [オプション...] [ command]

DESCRIPTION


dpkg-buildflags Debian のビルド中に使用するコンパイル フラグを取得するツールです
パッケージ。 デフォルトのフラグはベンダーによって定義されていますが、拡張/上書きできます。
いくつかの方法で:

1. システム全体で /etc/dpkg/buildflags.conf;

2. 現在のユーザーの場合 $XDG_CONFIG_HOME/dpkg/buildflags.conf コラボレー
$ XDG_CONFIG_HOME デフォルトは $HOME/.config;

3. ユーザーが環境変数を使用して一時的に (セクションを参照) ENVIRONMENT);

4. パッケージ管理者によって環境変数が設定されて動的に実行されます。
debian / rules (セクションを参照 ENVIRONMENT).

構成ファイルには、次の XNUMX 種類のディレクティブを含めることができます。

セット フラグ
という名前のフラグをオーバーライドします。 フラグ 価値があること .

ストリップ フラグ
という名前のフラグを剥がします フラグ にリストされているすべてのビルド フラグ .

付記 フラグ
という名前のフラグを拡張します フラグ で指定されたオプションを追加することで、 。 スペースというのは、
フラグの現在の値が空でない場合、追加された値の前に追加されます。

PREPEND フラグ
という名前のフラグを拡張します フラグ で指定されたオプションを先頭に追加することで、 。 スペースというのは、
フラグの現在の値が空でない場合は、先頭に追加された値に追加されます。

構成ファイルには、ハッシュ (#) で始まる行にコメントを含めることができます。 空の
行も無視されます。

コマンド


- ごみ すべてのコンパイル フラグとその値を標準出力に出力します。 フラグを XNUMX つ出力します
値と等号で区切られた行ごとに ("フラグ=”)。 これは
デフォルトのアクション。

- リスト 現在のベンダーがサポートしているフラグのリストを出力します (XNUMX 行に XNUMX つ)。 を参照してください。
サポートされている FLAGS 詳細については、セクションを参照してください。

- 状態
の動作を説明するのに役立つ情報を表示します。
dpkg-buildflags (dpkg 1.16.5 以降): 関連する環境変数、現在の
ベンダー、すべての機能フラグの状態。 また、結果のコンパイラ フラグを次のように出力します。
彼らの起源。

これはから実行することを目的としています debian / rules、ビルドログが明確に保たれるようにする
使用されたビルド フラグのトレース。 これは、次の問題に関連する問題を診断するのに役立ちます。
それら。

--エクスポート=形式でアーカイブしたプロジェクトを保存します.
すべてのコンパイルをエクスポートするために使用できる標準出力コマンドへの出力
特定のツールのフラグ。 もし 形式でアーカイブしたプロジェクトを保存します. 値が与えられていない、 sh 想定されます。
大文字で始まるコンパイル フラグのみが含まれます。その他は含まれません。
環境に適さないと考えられます。 サポートされている形式:

sh すべてのコンパイル フラグを設定してエクスポートするためのシェル コマンド。
環境。 フラグ値は引用符で囲まれているため、出力の準備が整っています。
シェルによる評価。

コマンドライン
すべてのコマンドを使用するためにビルド プログラムのコマンド ラインに渡す引数。
コンパイル フラグ (dpkg 1.17.0 以降)。 フラグ値はシェル内で引用符で囲まれます
構文。

configure
これはのレガシーエイリアスです コマンドライン.

make すべてのコンパイル フラグを設定してエクスポートするディレクティブを作成します。
環境。 出力はメイクファイルのフラグメントに書き込んで評価できます。
使用 include 指令。

- 得る フラグ
フラグの値を標準出力に出力します。 フラグが既知の場合は 0 で終了します
それ以外の場合は 1 で終了します。

- 元 フラグ
によって返される値の原点を出力します。 - 得る。 フラグが設定されている場合は 0 で終了します。
それ以外の場合は 1 で終了します。原点は次のいずれかの値になります。

ベンダー ベンダーによって設定された元のフラグが返されます。

  フラグはシステム全体の構成によって設定/変更されます。

user フラグはユーザー固有の構成によって設定/変更されます。

env フラグは環境固有の構成によって設定/変更されます。

--クエリ機能 エリア
指定された領域で有効になっている機能を出力します (dpkg 1.16.2 以降)。 唯一の
Debian およびその派生分野で現在認識されている領域は次のとおりです。 qa, 再現可能, 消毒する
& 硬化、を参照してください。 特徴 エリア 詳細については、セクションを参照してください。 の場合は 0 で終了します。
エリアが既知である場合、それ以外の場合は 1 で終了します。

出力は RFC822 形式で、機能ごとに XNUMX つのセクションがあります。 例えば:

特徴: パイ
有効: いいえ

機能: スタックプロテクター
有効: はい

- 助けて 使用法メッセージを表示して終了します。

- バージョン
バージョンを表示して終了します。

サポートされている FLAGS


CFフラグ C コンパイラのオプション。 ベンダーによって設定されたデフォルト値には次のものが含まれます。 -g
デフォルトの最適化レベル (-O2 通常、または -O0 もし DEB_BUILD_OPTIONS
環境変数の定義 ヌープト).

CPPFLAGS
C プリプロセッサのオプション。 デフォルト値: 空。

CXXフラグ
C++ コンパイラのオプション。 と同じ CFフラグ.

オブジェクトフラグ
Objective C コンパイラのオプション。 と同じ CFフラグ.

OBJCXXFLAGS
Objective C++ コンパイラのオプション。 と同じ CXXフラグ.

GCJフラッグス
GNU Java コンパイラ (gcj) のオプション。 のサブセット CFフラグ.

FFフラッグス Fortran 77 コンパイラのオプション。 のサブセット CFフラグ.

FCフラグ
Fortran 9x コンパイラのオプション。 と同じ FFフラッグス.

LDFLAGS
実行可能ファイルまたは共有オブジェクトをリンクするときにコンパイラに渡されるオプション (
リンカーが直接呼び出されると、 -Wl & , これらのオプションから削除する必要があります)。
デフォルト値: 空。

将来、必要に応じて新しいフラグが追加される可能性があります (たとえば、他のフラグをサポートするため)
言語)。

特徴 エリア


各エリアの機能は、 DEB_BUILD_OPTIONS &
DEB_BUILD_MAINT_OPTIONS 環境変数の領域値に ' を付けたもの+'と'-'修飾子。
たとえば、 硬化 「pie」機能を無効にし、「fortify」機能を無効にします。
でこれを行うことができます debian / rules:

エクスポート DEB_BUILD_MAINT_OPTIONS=強化=+パイ、-強化

特別な機能 (どのエリアでも有効) すべてのエリアを有効または無効にするために使用できます
同時に特徴があります。 したがって、内のすべてを無効にすると、 硬化 エリアと有効化
「フォーマット」と「強化」のみが次の方法で実現できます。

import DEB_BUILD_MAINT_OPTIONS=強化=-すべて、+フォーマット、+強化

qa
いくつかのコンパイル時オプション (以下で詳しく説明します) を使用すると、問題の検出に役立ちます。
ソースコードまたはビルドシステム。

バグ この設定 (デフォルトでは無効) は、確実に検出する警告オプションを追加します。
問題のあるソースコード。 警告は致命的です。

カナリア この設定 (デフォルトでは無効) は、ダミーのカナリア オプションをビルド フラグに追加します。
ビルド フラグがどのように伝播されるかをビルド ログで確認し、許可することができること
通常のビルド フラグ設定の省略を検出します。 現在サポートされている唯一の
フラグは CPPFLAGS, CFフラグ, オブジェクトフラグ, CXXフラグ & OBJCXXFLAGS に設定されたフラグで
-D__DEB_CANARY_フラグ_ランダムID__, LDFLAGS に設定 -Wl,-z,deb-canary-ランダムID.

消毒する
いくつかのコンパイル時オプション (詳細は後述) を使用して、結果のファイルをサニタイズすることができます。
メモリ破損、メモリ リーク、解放後の使用、スレッド データ競合に対するバイナリの保護
未定義の動作のバグ。

住所
この設定 (デフォルトでは無効) により、 -fsanitize = address 〜へ LDFLAGS &
-fsanitize = address -fno-省略フレームポインタ 〜へ CFフラグ & CXXフラグ.

この設定 (デフォルトでは無効) により、 -fsanitize = thread 〜へ CFフラグ, CXXフラグ &
LDFLAGS.

漏れ この設定 (デフォルトでは無効) により、 -fsanitize = Leak 〜へ LDFLAGS。 それが取得します
次のいずれかの場合、自動的に無効になります。 住所 または 機能が有効になっているため、
彼らはそれを暗示しています。

未定義
この設定 (デフォルトでは無効) により、 -fsanitize = undefined 〜へ CFフラグ, CXXフラグ
& LDFLAGS.

硬化
いくつかのコンパイル時オプション (詳細は後述) を使用して、結果のファイルを強化することができます。
メモリ破損攻撃に対してバイナリを追加するか、攻撃中に追加の警告メッセージを提供します。
編集。 以下に記載されている場合を除き、これらは以下のアーキテクチャではデフォルトで有効になっています。
彼らをサポートします。

形式でアーカイブしたプロジェクトを保存します. この設定 (デフォルトで有効) により、 -Wフォーマット -Werror = format-security 〜へ CFフラグ,
CXXフラグ, オブジェクトフラグ & OBJCXXFLAGS。 これにより、不適切なフォーマット文字列について警告が表示されます
を使用し、フォーマット関数が可能性を表す方法で使用されると失敗します。
セキュリティの問題。 現時点では、次の呼び出しについて警告しています。 printf & scanf 機能
ここで、フォーマット文字列は文字列リテラルではなく、フォーマット引数はありません。
〜のように printf(foo); printf("%s", ふー); 次の場合、これはセキュリティ ホールである可能性があります。
フォーマット文字列は信頼できない入力からのものであり、「%n」が含まれています。

強化する
この設定 (デフォルトで有効) により、 -D_FORTIFY_SOURCE = 2 〜へ CPPFLAGS。 コード中
世代のコンパイラはバッファ サイズに関する多くの情報を知っています (ここで、
可能)、安全でない長さ無制限のバッファ関数呼び出しを置き換えようとします
長さに制限のあるもの。 これは、古くて汚いコードの場合に特に便利です。
さらに、書き込み可能なメモリ内の「%n」を含むフォーマット文字列はブロックされます。 もし
アプリケーションはそのようなフォーマット文字列に依存しているため、回避する必要があります。

このオプションを有効にするには、ソースも次のようにコンパイルする必要があることに注意してください。
-O1 以上。 環境変数の場合 DEB_BUILD_OPTIONS 含まれています ヌープトをタップし、その後、
強化する glibc 2.16 によって新しい警告が発行されたため、サポートは無効になります。
以降。

スタックプロテクター
この設定 (stackprotectorstrong が使用されていない場合はデフォルトで有効) により、
-fstack-プロテクター --param=ssp-バッファサイズ=4 〜へ CFフラグ, CXXフラグ, オブジェクトフラグ,
OBJCXXFLAGS, GCJフラッグス, FFフラッグス & FCフラグ。 これにより、スタックに対する安全性チェックが追加されます
上書きします。 これにより、多くの潜在的なコードインジェクション攻撃が中断につながります。
状況。 最良の場合、これによりコードインジェクションの脆弱性が拒否に変わります。
(アプリケーションに応じて) サービスの対象外になるか、または問題にならない場合があります。

この機能には、glibc (または別のプロバイダー) に対するリンクが必要です。
__stack_chk_fail)なので、ビルドするときは無効にする必要があります -nostdlib or
-自立 または類似。

スタックプロテクター強力
この設定 (デフォルトで有効) により、 -fstack-protector-strong 〜へ CFフラグ,
CXXフラグ, オブジェクトフラグ, OBJCXXFLAGS, GCJフラッグス, FFフラッグス & FCフラグ。 こっちの方が強いよ
のバリアント スタックプロテクターただし、パフォーマンスに重大な影響はありません。

無効化 スタックプロテクター この設定も無効になります。

この機能には次の要件と同じ要件があります。 スタックプロテクター、さらに
gcc 4.9 以降が必要です。

リロ この設定 (デフォルトで有効) により、 -Wl、-z、relro 〜へ LDFLAGS。 番組中
ロードするには、リンカーによっていくつかの ELF メモリ セクションに書き込む必要があります。 このフラグは
ローダーは、制御をローダーに渡す前に、これらのセクションを読み取り専用にします。
プログラム。 最も注目すべき点は、これにより GOT 上書き攻撃が防止されることです。 このオプションが
無効、 バインドナウ も障害者になります。

バインドナウ
この設定 (デフォルトでは無効) により、 -Wl、-z、now 〜へ LDFLAGS。 プログラムのロード中に、
すべての動的シンボルが解決され、PLT 全体を読み取り済みとしてマークできるようになります。
のみ(のため リロ その上)。 次の場合、オプションを有効にすることはできません。 リロ ではありません
有効になりました。

パイ この設定 (デフォルトでは無効) により、 -fPIE 〜へ CFフラグ, CXXフラグ, オブジェクトフラグ,
OBJCXXFLAGS, GCJフラッグス, FFフラッグス & FCフラグ, -fPIE -パイ 〜へ LDFLAGS。 位置
アドレス空間レイアウトを利用するには、独立した実行可能ファイルが必要です
ランダム化。一部のカーネル バージョンでサポートされています。 ASLR はすでに可能ですが、
スタックおよびヒープ (brk および mmap) 内のデータ領域に適用される場合、コード領域は次のようにする必要があります。
位置に依存しないものとしてコンパイルされます。 共有ライブラリはすでにこれを行っています (-fPIC)。
ASLR は自動的に取得されますが、バイナリ .text 領域は PIE を構築して取得する必要があります。
ASLR。 これが起こると、ROP (Return Oriented Programming) 攻撃はより困難になります。
メモリ破損時に跳ね返る静的な場所がないため
攻撃。

これは互換性がありません -fPIC したがって、共有を構築する場合は注意が必要です
オブジェクト。

さらに、PIE は汎用レジスタを介して実装されるため、一部のアーキテクチャでは
(最も顕著なのは i386) 非常にテキストセグメントで最大 15% のパフォーマンスの低下が見られる場合があります。
重いアプリケーションのワークロード。 ほとんどのワークロードでは 1% 未満しか表示されません。 を備えたアーキテクチャ
より一般的なレジスタ (amd64 など) では、最悪の場合のペナルティはそれほど高くありません。

再現可能
以下で詳しく説明するコンパイル時オプションを使用すると、ビルドの再現性を向上させることができます。
または、コンパイル中に追加の警告メッセージを提供します。 以下に記載されている場合を除き、これらは
それらをサポートするアーキテクチャではデフォルトで有効になっています。

時代を超越した
この設定 (デフォルトで有効) により、 -日付-時刻 〜へ CPPFLAGS。 これは原因になります
警告 __時間__, __日にち__ & __タイムスタンプ__ マクロが使用されます。

ENVIRONMENT


同じ操作を実行する環境変数のセットが 2 つあります。最初のセット
(DEB_フラグ_op) 内では決して使用しないでください debian / rules。 を望むあらゆるユーザーを対象としています。
異なるビルド フラグを使用してソース パッケージを再ビルドします。 XNUMXセット目
(DEB_フラグ_メンテナンス_op) でのみ使用してください。 debian / rules パッケージ管理者による変更
結果のビルドフラグ。

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