質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

Q&A

解決済

3回答

2299閲覧

makeコマンドがうまくいきません。

john010

総合スコア9

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

makefile

make は、プログラムのビルド作業を自動化するツールです。コンパイル、リンク、インストール等のルールを記述したテキストファイルをmakefileと呼び、このルールに従ってmakeが自動的にビルドを実行する。

0グッド

0クリップ

投稿2021/08/11 09:33

編集2021/08/11 10:21

組み込みOSを自作したくてCのファイルも作り終え、Makefileを作りmakeを実行したのですが、何故かエラーが出ます。開発環境はDebian10です。どうすれば解決できますか?下はそれぞれMakefileのコードとエラー内容です。

Makefile

1PREFIX = /usr 2ARCH = h8300-hms 3BINDER = $(PREFIX)/bin 4ADDNAME = $(ARCH)- 5 6AR = $(BINDIR)/$(ADDNAME)ar 7AS = $(BINDIR)/$(ADDNAME)as 8CC = $(BINDIR)/$(ADDNAME)gcc 9LD = $(BINDIR)/$(ADDNAME)ld 10NM = $(BINDIR)/$(ADDNAME)nm 11OBJCOPY = $(BINDIR)/$(ADDNAME)objcopy 12OBJDUMP = $(BINDIR)/$(ADDNAME)objdump 13RANLIB = $(BINDIR)/$(ADDNAME)ranlib 14STRIP = $(BINDIR)/$(ADDNAME)strip 15 16H8WRITE = ../../tools/h8write/h8write 17 18H8WRITE_SERDEV = /dev/ttyUSB0 19 20OBJS = vector.o startup.o main.o 21OBJS += lib.o serial.o 22 23TARGET = kzload 24 25CFLAGS = -Wall -mh -nostdinc -nostdlib -fno-builtin 26 27CFLAGS += -I 28CFLAGS += -Os 29CFLAGS += -DKZLOAD 30 31LFLAGS = -static -T ld.scr -L. 32 33.SUFFIXES: .c .o 34.SUFFIXES: .s .o 35 36all : $(TARGET) 37 38$(TARGET) : $(OBJS) 39 $(CC) $(OBJS) -o $(TARGET) $(CFLAGS) $(LFLAGS) 40 cp $(TARGET) $(TARGET).elf 41 $(STRIP) $(TARGET) 42 43.c.o : $< 44 $(CC) -c $(CFLAGS) $< 45 46.s.o : $< 47 $(CC) -c $(CFLAGS) $< 48 49$(TARGET).mot : $(TARGET) 50 $(OBJCOPY) -O srec $(TARGET) $(TARGET).mot 51 52image : $(TARGET).mot 53 54write : $(TARGET).mot 55 $(H8WRITE) -3069 -f20 $(TARGET).mot $(H8WRITE_SERDEV) 56 57clean : 58 rm -f $(OBJS) $(TARGET) $(TARGET).elf $(TARGET).mot 59

Terminal

1//before change 2$ make 3/h8300-hms-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin -I -Os -DKZLOAD vector.c 4make: /h8300-hms-gcc: コマンドが見つかりませんでした 5make: *** [Makefile:44: vector.o] エラー 127 6 7//after change 8$ make 9/usr/bin/h8300-hms-gcc -c -Wall -mh -nostdinc -nostdlib -fno-builtin -I. -Os -DKZLOAD vector.c 10make: /usr/bin/h8300-hms-gcc: コマンドが見つかりませんでした 11make: *** [Makefile:47: vector.o] エラー 127

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

john010

2021/08/11 09:39

どのように変更すればいいですか?
1T2R3M4

2021/08/11 09:49 編集

回答中のやり取りと被ったので消去。
pepperleaf

2021/08/11 11:24

> /usr/bin/h8300-hms-gcc このファイル(コンパイラ本体)はあるのでしょうか?
jbpb0

2021/08/11 14:06

> /h8300-hms-gcc: コマンドが見つかりませんでした Makefileを見ると、「h8300-hms-gcc」だけじゃなくて、「h8300-hms-strip」とか「「h8300-hms-objcopy」とかも要るみたいですが、そのような「h8300-hms-*」というコマンドは、質問者さんがお使いのパソコン内のどこかにインストールしてあるのでしょうか?
guest

回答3

0

ベストアンサー

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

定義と参照先で名前があっていません。
定義の方の綴りが間違っているのでは。
BINDER -> BINDIR

makefile

1BINDER = $(PREFIX)/bin 2... 3CC = $(BINDIR)/$(ADDNAME)gcc

投稿2021/08/12 06:03

akiruno-oneone

総合スコア815

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

BINDER = $(PREFIX)/bin

まちがってますで.

投稿2021/08/11 09:39

編集2021/08/11 09:39
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

john010

2021/08/11 09:42

どのように変更すればいいですか?
y_waiwai

2021/08/11 09:44

このmakefileはあなたが書いたものじゃないんでしょうか
john010

2021/08/11 09:46

これはネットで拾ってきたものを自分の環境用に変更したものです。
y_waiwai

2021/08/11 09:47

BINDER → BINDIR にしてみよう
john010

2021/08/11 09:53

直しましたが、同じエラーが出力されます。
y_waiwai

2021/08/11 09:58

同じエラーが出るはずはないけどねえ。
y_waiwai

2021/08/11 09:59

おおかた間違って直してるんだろうけど
john010

2021/08/11 10:20

いくつか修正したら、エラーが少し違くなりました。質問文に載せておきます。
y_waiwai

2021/08/11 10:28

h8300-hmsでぐぐると、H8マイコン用のクロスコンパイル環境のようですが、それであってるんでしょうか。
john010

2021/08/11 11:07

はい。マイコンボードはH8/3069Fです。
y_waiwai

2021/08/11 11:34

なら、コンパイラをインストールしてある場所をきちんと設定しましょう 見つからないと言ってますぜ
y_waiwai

2021/08/12 08:11

> make: /usr/bin/h8300-hms-gcc: コマンドが見つかりませんでした h8300-hms-gcc のコマンドはどこにあるんでしょうか。そのパスを指定する必要があります
john010

2021/08/12 10:08

わかりました。少し調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問