|
|
TopPage > C言語関係 |
Contents
|
フロー | 実行プログラム |
ソース編集 | テキストエディタ種々 |
プリプロセス コンパイル 最適化 |
cc1 |
アセンブル | as |
リンク |
collect2 ld |
自動変数 | その定義 |
$@ | 1つのルールにおける生成したいターゲットファイル名 |
$< | ルール記述で最初に記述された依存物 |
$? | 依存物中、ファイル更新時間がターゲットよりも新しいものの全て |
$^ | そのルールで記載された全ての依存物 |
$* | suffix(拡張子)を除いたターゲットの名前 |
変数名 | その定義 | default値 |
AR | Archive | ar |
AS | アセンブル | as |
CC | Cコンパイル |
cc Linuxでは、cc -> gcc としてlinkされている |
CO | RSC(バージョン管理システムの1つ)のチェック | co |
CXX | C++コンパイル | g++ |
CPP | Cプリプロセス | $(CC) -E |
FC | FortranとRatfor用プリプロセス |
f77 linuxでは、f77 -> g77としてlinkされている |
GET | SCCSからfileを抽出 | get ※1 |
LEX | Lexの文法をソースコードに変換 |
lex linuxでは、lex -> flexとしてlinkされている |
YACC | Yaccの文法をソースコードに変換 | yacc |
LINT | lintでの文法チェックを実行 | lint ※1 |
M2C | Modula-2のソースコードをコンパイル | m2c ※1 |
PC | Pascalのコンパイル | pc ※1 |
MAKEINFO | TexinfoのソースファイルをInfoファイルに変換 | makeinfo |
TEX | TeXのソースファイルからTeX DVIファイルを作成 | tex |
TEXI2DVI | TexinfoのソースファイルからTeX DVIファイルを作成 | texi2dvi ※1 |
WEAVE | WebをTexに変換 | weave |
CWEAVE | C WebをTexに変換 | cweave |
TANGLE | WebをPascalに変換 | tangle |
CTANGLE | C WebをPascalに変換 | ctangle |
RM | ファイル削除 | rm -f |
ARFLAGS | ArchiverプログラムのFlag | rv |
ASFLAGS | アセンブラプログラムの追加Flag | なし |
CFLAGS | Cコンパイラの追加Flag | なし |
CXXFLAGS | C++コンパイラの追加Flag | なし |
COFLAGS | RCS coプログラムの追加Flag | なし |
CPPFLAGS | Cプリプロセッサの追加Flag | なし |
FFLAGS | Fortramコンパイラの追加Flag | なし |
GFLAGS | SCCS getプログラムの追加Flag | なし |
LDFLAGS | ldのリンカに関連したコンパイラの追加Flag | なし |
LFLAGS | Lexの追加Frag | なし |
YFLAGS | Yaccの追加Flag | なし |
PFLAGS | Pascalコンパイラの追加Flag | なし |
RFLAGS | FortramコンパイラとRatforプログラムの追加Flag | なし |
LINTFLAGS | lintの追加Flag | なし |
ターゲット名:依存物名 依存物名 .... [TAB]手順 ターゲット名:依存物名 依存物名 .... [TAB]手順 .... |
hoge_exe:hoge_main.o hoge_sub.o [TAB]gcc -o hoge_exe hoge_main.o hoge_sub.o hoge_main.o:hoge_main.c [TAB]gcc hoge_main.c -c hoge_sub.o:hoge_sub.c [TAB]gcc hoge_sub.c -c |
# hoge_exe Makefile #があるのはコメント行 # define PROJECT= hoge_exe CC= gcc OBJS= hoge_main.o hoge_sub.o CFLAGS= -g $(PROJECT):$(OBJS) [TAB]$(CC) -o $(PROJECT) $(OBJS) -O2 .c.o: サフィックスルール [TAB]$(CC) $(CFLAGS) -c $< hoge_main.o: hoge_main.h この行は、なくてもいいが、ここで関連付けをすれば headerファイルを更新した場合もmakeが有効になる。 #### .PHONY: clean PHONYターゲット clean: [TAB]$(RM) $(PROJECT) $(OBJS) |
・ | 適当なディレクトリを用意してソースファイル一式(*.c *.h)をそこに置く |
・ | そのディレクトリをカレントにする |
・ |
Makefile.inの作成 |
・ |
install-shをカレントにコピー |
・ |
autoscanの実行し configure.scanをconfigure.acにリネーム |
・ |
configure.acを編集 |
・ |
autoheaderの実行 |
・ |
autoconfの実行 |
atc_test.c | func.c | ||
|
|
DESTDIR = prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ CC = @CC@ INSTALL = @INSTALL@ OBJECTS = atc_test.o func.o TARGET = atcTEST all:$(TARGET) $(TARGET):$(OBJECTS) $(CC) -o $@ $^ install: mkdir -p $(DESTDIR)$(bindir) $(INSTALL) -m755 $(TARGET) $(DESTDIR)$(bindir) clean: $(RM) $(TARGET) $(OBJECTS) uninstall: $(RM) $(DESTDIR)$(bindir)/$(TARGET) |
host>cp /usr/share/automake-X.X/install-sh ./ host>ls -l 合計 44 -rw-rw-r-- 1 user group 376 mm月 dd hh:mm Makefile.in -rw-rw-r-- 1 user group 146 mm月 dd hh:mm atc_test.c -rw-rw-r-- 1 user group 0 mm月 dd hh:mm autoscan.log -rw-rw-r-- 1 user group 460 mm月 dd hh:mm configure.ac -rw-rw-r-- 1 user group 155 mm月 dd hh:mm func.c -rwxr-xr-x 1 user group 9233 mm月 dd hh:mm install-sh |
host>autoscan autom4te: configure.ac: no such file or directory autoscan: /usr/bin/autom4te failed with exit status: 1 host>ls Makefile.in atc_test.c autoscan.log configure.scan func.c host>mv configure.scan configure.ac host>ls Makefile.in atc_test.c autoscan.log configure.ac func.c |
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) AC_CONFIG_SRCDIR([atc_test.c]) <--ディレクトリを認識するための適当に選択された AC_CONFIG_HEADER([config.h]) ファイル名で別にmain()が入っているとかは 関係ない # Checks for programs. AC_PROG_CC AC_PROG_INSTALL # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT |
# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) AC_INIT(autoconf sample program, 1.00, xxxx@yyyy.ne.jp) AC_CONFIG_SRCDIR([atc_test.c]) AC_CONFIG_HEADER([config.h]) # Checks for programs. AC_PROG_CC AC_PROG_INSTALL # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. # Checks for library functions. AC_CONFIG_FILES([Makefile]) AC_OUTPUT |
host>ls Makefile.in atc_test.c autoscan.log configure.ac func.c install-sh host>autoheader host>ls Makefile.in autom4te.cache config.h.in func.c atc_test.c autoscan.log configure.ac install-sh |
host>autoconf host>ls Makefile.in autom4te.cache config.h.in configure.ac install-sh atc_test.c autoscan.log configure func.c |
host>./configure checking for gcc... gcc checking for C compiler default output file name... a.out checking whether the C compiler works... yes checking whether we are cross compiling... no checking for suffix of executables... checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ANSI C... none needed checking for a BSD-compatible install... /usr/bin/install -c configure: creating ./config.status config.status: creating Makefile config.status: creating config.h |
DESTDIR = prefix = /usr/local exec_prefix = ${prefix} bindir = ${exec_prefix}/bin CC = gcc INSTALL = /usr/bin/install -c OBJECTS = atc_test.o func.o TARGET = atcTEST all:$(TARGET) $(TARGET):$(OBJECTS) $(CC) -o $@ $^ install: mkdir -p $(DESTDIR)$(bindir) $(INSTALL) -m755 $(TARGET) $(DESTDIR)$(bindir) clean: $(RM) $(TARGET) $(OBJECTS) uninstall: $(RM) $(DESTDIR)$(bindir)/$(TARGET) |
host>make gcc -c -o atc_test.o atc_test.c gcc -c -o func.o func.c gcc -o atcTEST atc_test.o func.o |
host>make install DESTDIR=/tmp/hoge mkdir -p /tmp/hoge/usr/local/bin /usr/bin/install -c -m755 atcTEST /tmp/hoge/usr/local/bin |
m4マクロ | 個別のm4マクロ | 変数 | 内容 |
AC_INIT | AC_PACKAGE_NAME | PACKAGE_NAME | パッケージ名を示す |
AC_PACKAGE_TARNAME | PACKAGE_TARNAME | tar名を示す | |
AC_PACKAGE_VERSION | PACKAGE_VERSION | versionを示す | |
AC_PACKAGE_STRING | PACKAGE_STRING | パッケージ名とversionを示す | |
AC_PACKAGE_BUGREPORT | PACKAGE_BUGREPORT | バグレポート先のアドレスを示す |
INSTALL | インストール方法の記載 |
COPYING | 使用許諾関係の記載 |
README | Read Me |
AUTHORS | 著者、作者に関しての記載 |
ChangeLog | 変更、更新履歴 |
NEWS | その他情報 |
TopPage > C言語関係 |