web-dev-qa-db-ja.com

LinuxにデフォルトでCコンパイラがあるのはなぜですか?

Linuxディストリビューションにgccが事前にインストールされているのはなぜですか? LinuxのほとんどのアプリケーションがCで書かれているからですか?

Gccディレクトリが削除されるとどうなりますか?

2
DesirePRG

Linuxディストリビューションにgccが事前にインストールされているのはなぜですか?

[〜#〜] a [〜#〜]Linuxディストリビューションはかなりあいまいです。一部はそれをインストールし、ほとんどはそれをインストールすることを提案します(おそらくインストール中にデフォルトを選択した場合でも)。ただし、すべてのディストリビューションでインストールされるわけではなく、通常は選択肢があります。

LinuxのほとんどのアプリケーションがCで書かれているからですか?

いいえ。Cコンパイラ(任意のCコンパイラ、 [〜#〜] gcc [〜#〜] は単なる例であり、 clang/lvm の場合もあります。 =、または何か他のもの)は非常に便利です。また、Linuxシステムだけでなく、BSDやWindowsのインストールでも使用できます。

Gccディレクトリが削除されるとどうなりますか?

GCCのいずれかの部分(またはプリプロセッサなどの一部)に依存するプログラムがインストールされていないと仮定すると、すべてが引き続き正常に機能します。削除したGCCバージョンで新しいCプログラムをコンパイルすることはできません。それが最後のCコンパイラであった場合(複数のコンパイラをインストールできます)、後でCプログラムをコンパイルする場合は、バイナリパッケージを使用して再インストールする必要があります。

gccディレクトリを削除するとどうなるでしょうか?適切なパッケージマネージャーを使用して削除すると思います。 OS上のディレクトリをランダムに削除するだけでは、安全な方法ではありません。

14
Hennes

Linux上の多くのユーティリティは、gccを使用してコンパイルされています。これらのユーティリティのほとんどは、実行時の共有ライブラリを呼び出します。パッケージ全体をアンインストールした場合でも、共有ライブラリを保持する必要があります。

コマンド/bin/lsを使用してstrings -a /bin/lsを少し検索したところ、Linuxの標準Cライブラリであるlibc.soの使用法が示されています。 Linuxは正式にはGnu/Linuxであるため、ほとんどのユーティリティはGnu/Cまたはgccでコンパイルされていると推測できます。 man libcを実行すると、ほとんどのLinuxユーティリティでglibcが使用されていることがわかります。したがって、ユーティリティを機能させるには、libcglibcを保持する必要があります。

3
unxnut

特に過去のABI互換性の欠如は、ソースからのビルドがかなり一般的であることを意味します。もちろん、多くの人がビルドするにはCコンパイラ以上のものが必要です...

0
Yuhong Bao

有名ブランドのサーバー(HP Enterprises Proliant、Fujitsu Primergyなど)では、ベンダー固有のハードウェア監視ドライバーは、多くの場合、重要なカーネルインターフェイスコンポーネントのソースコードを含む形式で提供されます。ドライバーパッケージには通常、ドライバーパッケージのリリース時にハードウェアベンダーに認識されていた、サポートされているカーネルバージョン用のコンパイル済みドライバーも含まれます。

これにより、Linuxディストリビューションがカーネルセキュリティ更新を公開するたびに、ハードウェアベンダーが更新されたカーネルと一致する新しいパッケージをテストして公開するのを待つことなく、ハードウェア監視モジュールを再コンパイルして更新されたカーネルと一致させることができます。

通常、監視ドライバーには、システムが新しいカーネルバージョンで初めて起動されたときに、適切なモジュールを自動的に再コンパイルするスクリプト自動化が含まれています。もちろん、これはコンパイラと必要なカーネル開発/ヘッダーパッケージがシステムにインストールされている場合にのみ成功します。

これが行われなかった場合、重要なセキュリティアップグレードをインストールすると、基本的なハードウェア監視情報の多くがコストになる場合があります。システムPSUのステータス、温度、ファン、および最新のサーバーでは、通常、電力消費も発生します。

データセンターでは、このような監視により、「冗長なファン/ PSUが故障しました。明日の営業時間中に、データセンターの担当者をホットスワップに送ります」と「サーバーのファンが多すぎて、過熱してシャットダウンします。SLAが壊れており、顧客は不満を持っています。サーバーをできるだけ早く修理または交換する必要があります。」(はい、そうではありませんすべてクラウドベースであるか、まだ仮想化されています。)

0
telcoM