1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

分割コンパイルとMakefile

Last updated at Posted at 2022-09-19

[1] 分割コンパイルの仕方

前提

以下のファイルがあると仮定
   1 showA.c
   2 showB.c
   3 main.c
   4 show.h

showA.c
#include <stdio.h>

void showA(){
    printf("A\n");
}
showB.c
#include <stdio.h>

void showB(){
    printf("B\n");
}
main.c
#include <stdio.h>
#include "show.h"

int main(void){
    showA();
    showB();
    int n = retnum();
    printf("retnum : %d\n",n);
    return 0;
}
show.h
void showA(void);
void showB(void);

int retnum(){
    return 1;
}

コンパイルの仕方

以下を順番に実行する。

ターミナル
$ gcc -c showA.c
ターミナル
$ gcc -c showB.c
ターミナル
$ gcc -c main.c
ターミナル
$ gcc -o main showA.o showB.o main.o

まとめて実行すると、以下のとおり。

ターミナル
$ gcc -c showA.c showB.c main.c
ターミナル
$ gcc -o main showA.o showB.o main.o

[2] Makefileの書き方

Makefileとは

(ざっくりと)コンパイルを自動化するツール。
詳細 : https://www.gnu.org/software/make/manual/make.html#Reading

Makefileを書く

Makefileの記述方法

記述方法
作りたいもの : 作るのに必要な材料
<TAB>作る方法
Makefile
all: main

showA.o: showA.c
	gcc -c showA.c

showB.o: showB.c
	gcc -c showB.c

main.o: main.c
	gcc -c showM.c

main: showA.o showB.o main.o
	gcc -o main showA.o showB.o showM.o

clean:
	rm -f *.o main
ターミナル
$ make showA.o     //gcc -c showA.c が実行される。

$ make all         //showA.o showB.o main.o main が作られる。

$ make clean       //rm -f *.o main が実行される。

以上。

1
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?