私はLinuxを最初から学んでいます。ページツールチェーンについて話し合ってください。これまですべてを理解していましたが、「ツールチェーン」という用語を理解していません。
私が知る限り、ツールチェーンは新しいディストリビューションでツールをコンパイルするために使用されるツールのセットです。これは、ソフトウェアがホストコンパイラを使用してコンパイルされないようにするために必要です。
Glibc、Binutilsなどをホストツール(この段階でコンパイラが構築されていると思う)を使ってコンパイルしなければならないと思うのは正しいですか?その後、新しくコンパイルされたコンパイラを使用してオペレーティングシステムを生成する別のツールを構築しますか?
この部分は非常に概略的であり、Google検索では役に立つ可能性のある結果は出ませんでした。誰もが私がこれをよりよく理解するのに役立つ有用な資料を共有できればいいでしょう。
答え1
ツールチェーンは、単にソフトウェア(コンパイラ、アセンブラ、リンカ、ライブラリ、およびいくつかの便利なユーティリティ)を構築するためのツールです。
この場合、重要な部分はホスト独立- ダウンロードしたツールとは何の関係もありません。
ツールを再構築するにはいくつかの理由があります。
- バックドアにこっそり入るのは難しいです(不可能ではありませんが)。
- コンパイルパラメータは適切に調整できます。あなたの一般的なバイナリではないシステム。
- 最新バージョンのツールが届きます。
答え2
LFSはツールチェーン(つまり、それらが使用するコンパイラ、リンカ、アセンブラ、ライブラリ)を3回再構築します。
- 初めてホストシステムのツールチェーンを使用して、ターゲットシステムに新しいツールチェーン(
gcc
、、ld
などbinutils
)を構築します。glibc
これらのツールはホストシステムの共有ライブラリに接続され、現在ターゲットシステムから起動しても存在しません。だから... - 第二に、ツールチェーンは、ターゲットコンピュータにインストールされたライブラリに基づいて構築されます。つまり、ターゲットシステムから起動すると、ツールチェーンが機能しますが、まだホストシステムに接続する可能性があり、どのツールチェーンでもターゲットシステムではなくホストシステムの最適化にコンパイルされます。だから...
- 3番目は魅力です。今回は、ツールチェーンがすべてのリンクや添付ファイルのホストシステムを完全に「整理」し、対象システムに合わせて最適化します。
これはおそらくLFSシステムの構築にとって最も重要な部分であり、ガイドラインに細心の注意を払うことが重要です。私が構築したすべてのLFSシステム(これまで4つ)で、この部分に問題がありました。時々、これらの問題ははるかに後に現れないかもしれませんが、これは想像できるように非常に残念です。