技術情報

実行ファイルはどう作られるか? (2)

これ以降は以下の実行環境で作業を進めます:
OS:Ubuntu WSL 20.04
CPU:x86_64
コンパイラ:gcc 9.3.0

ソースコードから実行形式作成まで

以下のプログラムを用いて実行ファイルの作り方を見ていきます:

// add_num.c

int add_num(int a, int b)
{
    return a + b;
}
// exec_file_sample.c

#include <stdio.h>

int hoge = 0;
int add_num(int a, int b);

int main()
{
    int huga = 2;
    printf("%d\n", add_num(hoge, huga));
}

add_num.cで定義されたadd_num関数を、exec_file_sample.cで実際に呼び出しているのが分かります。これらのコードを実際にコンパイルしてみましょう。次のコマンドでコンパイルすることができます:

gcc -c exec_file_sample.c -o exec_file_sample.o
gcc -c add_num.c -o add_num.o

これにより、両ファイルがコンパイルされ、exec_file_smaple.oとadd_num.oという二つのオブジェクトファイルが生成されます。さらに、これらのファイルをリンクして実行形式を作ってみましょう:

gcc exec_file_sample.o add_num.o -o exec_file_sample

これにより、実行形式ファイルexec_file_sampleが生成されます。

./exec_file_sample

でファイルを実行すると実行結果として2が表示されます。

次回以降

以上で、実行ファイルを実際に作る手順を解説しました。次回以降は実行ファイルのバイナリを詳細に解説したいと思います。

D.S S.O
データサイエンティストのS.Oです。