ライブラリを使用してプログラムを実行するたびに、ターミナルでこれら4つのコマンドを実行する必要があります。
線は
cc -m32 -c mylib.c
ar -rcs libmylib.a mylib.o
cc -m32 -c prog.c
cc -m32 prog.o -L. -lmylib
./a.out
上記のコマンドのメイクファイルを作成して実行するにはどうすればよいですか?詳細な手順をいただければ幸いです。ありがとう。
編集:ここに解決策があります:
a.out: prog.o libmylib.a
cc prog.o -L. -lmylib
prog.o: prog.c mylib.h
libprint_int.a: mylib.o
ar -rcs libmylib.a mylib.o
print_int.o: mylib.c mylib.h
clean:
rm a.out prog.o libmylib.a mylib.o
タブの代わりにスペースを使用したため、2行目でエラーが発生しました。
何かのようなもの:
program_NAME := a.out
SRCS = mylib.c prog.c
.PHONY: all
all: $(program_NAME)
$(program_NAME): $(SRCS)
ar -rcs libmylib.a mylib.o
cc -m32 prog.o -L. -lmylib
あなたを始めるかもしれない
自分でメイクファイルを使い始めたばかりで、かなりトリッキーだと思いますが、一度動作させると、動作が非常に簡単になります(これにより、バグが多くなる可能性がありますが、経験のある人はSOおそらくそれらを修正するのを助けることができるでしょう)
実行に関しては、ファイルを「Makefile」として保存してください(大文字と小文字は区別されます)
次に、cmd行から(Makefileを含むディレクトリにcdしていることを確認してください):
$ make
それでおしまい!
[〜#〜]更新[〜#〜]
中間静的ライブラリが不要な場合は、次のようなMakefileでスキップできます。
program_NAME := a.out
SRCS = mylib.c prog.c
OBJS := ${SRCS:.c=.o}
CFLAGS += -m32
program_INCLUDE_DIRS :=
program_LIBRARY_DIRS :=
program_LIBRARIES := mylib
CPPFLAGS += $(foreach includedir,$(program_INCLUDE_DIRS),-I$(includedir))
LDFLAGS += $(foreach librarydir,$(program_LIBRARY_DIRS),-L$(librarydir))
LDFLAGS += $(foreach library,$(program_LIBRARIES),-l$(library))
CC=cc
LINK.c := $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
.PHONY: all
all: $(program_NAME)
$(program_NAME): $(OBJS)
$(LINK.c) $(program_OBJS) -o $(program_NAME)
Makeコマンドの公式ドキュメントほど詳細な手順はないと思います: http://www.gnu.org/software/make/manual/make.html#Overview
基本的には、ターゲットを作成し、その中にコマンドを配置する必要があります。 「make」と入力したときに動作するようにする場合、ターゲットは「all」にすることができます。優れたmakefileは、変数などを使用してlib/sourcesの追加に柔軟に対応します。
Makeファイルを理解するための最も簡単なチュートリアルは Cprogramming.com にあります。それを理解し終えたら、 make file マニュアルを読むことができます。