検索

2.3. ソースからのソフトウェアのビルド

download PDF

ソフトウェア構築プロセス中に、ソースコードは、RPM を使用してパッケージ化できるソフトウェアアーティファクトに変換されます。

2.3.1. ネイティブにコンパイルされたコードからのソフトウェアのビルド

次のいずれかの方法を使用して、コンパイル言語で書かれたソフトウェアを実行可能ファイルにビルドできます。

  • 手動ビルド
  • 自動ビルド

2.3.1.1. サンプル C プログラムを手動ビルド

手動ビルドを使用して、コンパイル言語で書かれたソフトウェアをビルドできます。

C で書かれたサンプルの Hello World プログラム (cello.c) には次の内容が含まれています。

#include <stdio.h>

int main(void) {
    printf("Hello World\n");
    return 0;
}

手順

  1. GNU コンパイラーコレクション から C コンパイラーを起動し、ソースコードをバイナリーにコンパイルします。

    $ gcc -g -o cello cello.c
  2. 作成されたバイナリー cello を実行します。

    $ ./cello
    Hello World

2.3.1.2. サンプル C プログラムの自動ビルドの設定

大規模なソフトウェアでは、自動ビルドが一般的に使用されます。Makefile ファイルを作成し、GNU make ユーティリティーを実行することで、自動ビルドを設定できます。

手順

  1. 次の内容を含む Makefile ファイルを cello.c と同じディレクトリーに作成します。

    cello:
    	gcc -g -o cello cello.c
    clean:
    	rm cello

    cello:clean: の下の行は、行頭にタブ文字 (タブ) を追加する必要があることに注意してください。

  2. ソフトウェアをビルドします。

    $ make
    make: 'cello' is up to date.
  3. ビルドが現在のディレクトリーですでに利用可能であるため、make clean コマンドを入力してから、make コマンドを再度入力します。

    $ make clean
    rm cello
    
    $ make
    gcc -g -o cello cello.c

    GNU make システムが既存のバイナリーを検出するため、この時点でプログラムを再度ビルドしても効果がないことに注意してください。

    $ make
    make: 'cello' is up to date.
  4. プログラムを実行します。

    $ ./cello
    Hello World

2.3.2. ソースコードの解釈

次のいずれかの方法を使用して、インタープリター型プログラミング言語で記述されたソースコードをマシンコードに変換できます。

  • バイトコンパイル

    ソフトウェアのバイトコンパイル手順は、次の要素によって異なります。

    • プログラミング言語
    • 言語の仮想マシン
    • その言語で使用するツールおよびプロセス

      注記

      たとえば Python で書かれたソフトウェアをバイトコンパイルできます。配布を目的とした Python ソフトウェアは多くの場合バイトコンパイルされますが、このドキュメントで説明されている方法では行われません。説明されている手順は、コミュニティー標準に準拠することではなく、簡素化することを目的としたものです。実際の Python ガイドラインは Software Packaging and Distribution を参照してください。

    Python ソースコードは、そのまま解釈することもできます。ただし、バイトコンパイルされたバージョンの方が高速です。したがって、RPM パッケージの作成者は、エンドユーザーに配布するために、バイトコンパイルされたバージョンをパッケージ化する傾向があります。

  • 直接解釈

    Bash などのシェルスクリプト言語で書かれたソフトウェアは、常に直接解釈によって実行されます。

2.3.2.1. サンプル Python プログラムのバイトコンパイル

Python ソースコードの直接解釈ではなくバイトコンパイルを選択すると、より高速なソフトウェアを作成できます。

Python プログラミング言語で書かれたサンプルの Hello World プログラム (pello.py) には、次の内容が含まれています。

print("Hello World")

手順

  1. pello.py ファイルをバイトコンパイルします。

    $ python -m compileall pello.py
  2. ファイルのバイトコンパイルされたバージョンが作成されたことを確認します。

    $ ls __pycache__
    pello.cpython-311.pyc

    出力内のパッケージのバージョンは、インストールされている Python のバージョンによって異なる場合があることに注意してください。

  3. pello.py でプログラムを実行します。

    $ python pello.py
    Hello World

2.3.2.2. サンプル Bash プログラムの直接解釈

Bash シェルの組み込み言語で書かれたサンプルの Hello World プログラム (bello) には、次の内容が含まれています。

#!/bin/bash

printf "Hello World\n"
注記

bello ファイルの先頭にある シバン (#!) 記号は、プログラミング言語のソースコードの一部ではありません。

シバン を使用して、テキストファイルを実行可能ファイルに変換します。システムのプログラムローダーが、シバン を含む行を解析してバイナリー実行可能ファイルへのパスを取得し、それがプログラミング言語インタープリターとして使用されます。

手順

  1. ソースコードを含むファイルを実行可能ファイルにします。

    $ chmod +x bello
  2. 作成したファイルを実行します。

    $ ./bello
    Hello World
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.