1. ホーム
  2. gcc

[解決済み】ファイル形式が認識されない。GCCを使用してリンカスクリプトとして扱う

2022-02-06 02:53:56

質問

私はMakefileの初心者で、file1.c, file2.c, file1.hの3つのファイルからexFileという実行ファイルを作ろうとしているところです。以下は私が得たものです。

all: exFile
exFile: file1.o file2.o 
    gcc -Wall -g -m32 repeat.o show.o -o repeat

file1.o: file1.c file1.h
    gcc -Wall -g -m32 -S file1.c -o file1.o

file2.o: file2.c 
    gcc -Wall -g -m32 -S file2.c -o file2.o

この形式のmakefileをウェブで探したのですが、手つかずでした。 コンパイルしようとすると、こうなります。

usr/bin/ld:file1.o:1: file format not recognized; treating as linker script

アセンブリファイルを使用してプログラムをコンパイルしたことがありますが、cファイルやfile1.hファイルをどうすればいいのかよくわかりません。file1.cはfile1.hを含むので、それらをリンクしなければならない(と思う?) 何か提案や参考文献へのリンクがあればありがたいです。

どのように解決するのですか?

には2つの問題があります。 gcc コマンドラインを使用します。 第一に、あなたが指定しているのは -S フラグは、gccがオブジェクトコードではなくアセンブリコードを生成するようにします。 第二に -cというように、2つのオブジェクトファイルではなく

これらのエラー以外にも、パターンルールを使用することでmakefileを簡略化することができます。 その代わりに、次のようなものを試してみることをお勧めします。

-S

あるいは、EmployedRussianが指摘するように、GNU makeの組み込み機能をもっと活用した、もっと最小限のものでもよいでしょう。

プレ file1.o