ホームページ > 運用・保守 > Linuxの運用と保守 > なぜ Linux はソース コードをコンパイルする必要があるのでしょうか?

なぜ Linux はソース コードをコンパイルする必要があるのでしょうか?

青灯夜游
リリース: 2023-03-17 10:21:25
オリジナル
2659 人が閲覧しました

理由: 1. Linux には多くのバージョンがありますが、バージョンごとに使用するソフトウェアやカーネルのバージョンが異なり、バイナリ パッケージが依存する環境が必ずしも正常に動作できるとは限りません。そのため、ほとんどのソフトウェアは直接提供されます。処理用のソース コードをコンパイルしてインストールします。 2.さまざまなニーズに合わせてカスタマイズが簡単です。 3. 運用保守や開発者の保守に便利 ソースコードはバイナリでパッケージ化することも可能ですが、パッケージ化には保守などのコストがかかるため、ソースコードであればソフトウェアメーカーが直接保守します。

なぜ Linux はソース コードをコンパイルする必要があるのでしょうか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux はなぜソース コードをコンパイルする必要があるのですか?

一般的に、ソフトウェアのインストール方法には yum (rpm) とソース コードのコンパイルが含まれます。コードを作成しますか? ソフトウェアをコンパイルしてインストールしますか?ソフトウェアをコンパイルしてインストールするためにソース コードを選択する理由はいくつかあります。

  • さまざまなオペレーティング プラットフォームに対応するために、多くの Linux バージョンがありますが、各バージョンは異なるソフトウェアまたはカーネル バージョンを使用します。バイナリ パッケージが依存する環境は必ずしも正常に動作するとは限らないため、ほとんどのソフトウェアはソース コードを直接提供します。

  • さまざまなニーズに合わせて簡単にカスタマイズできます。必要なソフトウェアは何度もカスタマイズできます。必要なものはすべてインストールできます。ほとんどのバイナリ コードはワンクリックでインストールできます。自由度は高くない!

  • 運用保守や開発者の保守に便利です 弊社のソースコードはバイナリパッケージ化が可能ですが、パッケージ化にはメンテナンス等のコストがかかりますので、がソース コードの場合、ソフトウェア メーカーが直接メンテナンスしますが、バイナリの場合は、通常、Linux 発行元から提供されます。

Linux コンパイル ソース コード チュートリアル

Linux 上のほぼすべてのソフトウェアは GPL 認定されているため、ほぼすべてのソフトウェアがソース コードを提供します。

Linux で実行するには、ソフトウェアはバイナリ ファイルである必要があるため、ソフトウェアのソース コードを取得したら、Linux で実行する前にそれをバイナリ ファイルにコンパイルする必要があります。

1. ソフトウェアのコンパイル プロセス

ソース コードを Linux で実行できるバイナリ ファイルにコンパイルするには 2 つの手順が必要です:

  • gcc コンパイラを使用してソース コードをオブジェクト ファイルにコンパイルします

  • gcc コンパイラを再度使用してオブジェクト ファイルをバイナリ ファイルにリンクします

このプロセスは簡単そうに見えますが、実際はそうではありません。ソフトウェアのソースコードは複数のソースファイルにカプセル化されることが多く、また、それらのファイルは複雑な依存関係を持っており、指定された順序に厳密に従ってコンパイルする必要があるため、コンパイルの難易度は確実に高くなります。幸いなことに、make コマンドはコンパイル プロセスを簡素化するのに役立ちます。

コンパイル プロセス全体は Makefile ファイルに凝縮されています (プログラムのコンパイルとリンクの方法を make コマンドに指示します)。make コマンドが実行されると、make は現在のディレクトリに移動して Makefile ファイルを見つけます。ファイルに基づいて、コンパイル プロセス全体を完了する必要があります。

Makefile ファイルは、configure コマンドによって生成されます。 configure コマンドを実行すると、configure は現在のシステム環境に基づいてこのシステムに適した Makefile を動的に生成し、make コマンドで使用します。

2. Linux ソース コードのインストール手順

  • ソース コードを入手する
    ソフトウェアを /usr/local/ にコピーして解凍します。

  • INSTALLファイルとREADMEファイルをご覧ください
    解凍後、INSTALLファイルとREADMEファイルをご覧いただくと、本ソフトウェアのインストール方法や注意事項が詳しく説明されています。

  • Makefile の作成
    configure コマンドを実行して Makefile を生成します。

  • コンパイル
    make clean;make コマンドを実行して、ソース コードをバイナリ ファイルにコンパイルします。
    PS: make clean コマンドは、最後のコンパイルによって生成されたターゲット ファイルをクリアするために使用されます。このステップはオプションですが、コンパイルを確実に成功させるためには、追加することをお勧めします。ソフトウェア内にオブジェクトファイルが残ることによるコンパイルの失敗を防ぎます。

  • インストール
    make install コマンドを実行して、前の手順でコンパイルしたバイナリ ファイルを指定したディレクトリにインストールします。

3. インストールのデモ

1) /usr/local/ と入力し、memcached ディレクトリを作成します。 :

cd /usr/local/
mkdir memcached
ログイン後にコピー

2) memcached のソース コードをダウンロードします

wget http://memcached.org/files/memcached-1.4.29.tar.gz
ログイン後にコピー

3) ソース コードを解凍します

tar -zxvf memcached-1.4.29.tar.gz
ログイン後にコピー

4)configure を実行して Makefile を生成します。 #

./configure --prefix=/usr/local/memcached/
ログイン後にコピー
このとき、カレントディレクトリに Makefile が生成されます。

注: -prefix パラメータは、ソフトウェアのインストール ディレクトリを指定します。 make install コマンドを実行すると、ソフトウェアはこのパスにインストールされます。このパラメータが指定されておらず、プレフィックスも指定されていない場合、実行可能ファイルはデフォルトで /usr/local/bin に配置され、ライブラリはファイルはデフォルトで /usr/local/lib に配置されます。設定ファイルはデフォルトで /usr/local/etc に配置されます。他のリソース ファイルは /usr/local/share に配置されます。

5) make を実行し、Makefile から命令を読み取り、ソース コードをコンパイルします

make
ログイン後にコピー

此时make会读取Makefile文件,将源码编译成二进制文件,并存放在当前目录下。

执行这一步之前可以先进行清理作业:

make clean && make uninstall
ログイン後にコピー

6)执行make install,将软件安装至指定目录

make install
ログイン後にコピー

此时二进制文件会被安装到先前configure prefix参数设置的路径中去。
安装完成!

4、cmake命令(了解)

cmake就是一个与make同级别的编译工具,只不过它依靠的不是Makefile作为编译规则,而是根据CMakeLists.txt来编译的。
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。

CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。
如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。

相关推荐:《Linux视频教程

以上がなぜ Linux はソース コードをコンパイルする必要があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート