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

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

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

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

makefile

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

Q&A

解決済

2回答

469閲覧

makefile のインストール先指定

shotaroh

総合スコア23

make

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

makefile

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

0グッド

0クリップ

投稿2018/07/03 09:05

編集2018/07/03 09:36

makefile のインストール先指定の質問です。
普段何も考えずに
./configure, make, make install
を実行しているので、よくわかりません。

サーバー環境で、環境を壊したくないので、自分のディレクトリ内にインストールし、
パスを通すという事がしたいのですが、
makefile 内のどの部分でインストール先が指定されているのかが、読み解けません...

インストールしたいものの中に configure がなく、makefile の
どこかに PREFIX や BINDIR があるのではと探してはいるもののやはり、よくわかりません。

ググっても欲しい情報がなかなか手に入らず、困っています。
初歩的な質問でお恥ずかしいのですが、ご回答いただけたら幸いです。

ちなみに Makefile の中身はこんな感じです。

makefile

1CC= gcc 2CFLAGS= -g -Wall -O2 3#LDFLAGS= -Wl,-rpath,$$ORIGIN/../lib 4DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE -D_CURSES_LIB=1 5KNETFILE_O= knetfile.o 6LOBJS= bgzf.o kstring.o bam_aux.o bam.o bam_import.o sam.o bam_index.o \ 7 bam_pileup.o bam_lpileup.o bam_md.o razf.o faidx.o bedidx.o \ 8 $(KNETFILE_O) bam_sort.o sam_header.o bam_reheader.o kprobaln.o bam_cat.o 9AOBJS= bam_tview.o bam_plcmd.o sam_view.o \ 10 bam_rmdup.o bam_rmdupse.o bam_mate.o bam_stat.o bam_color.o \ 11 bamtk.o kaln.o bam2bcf.o bam2bcf_indel.o errmod.o sample.o \ 12 cut_target.o phase.o bam2depth.o padding.o bedcov.o bamshuf.o \ 13 bam_tview_curses.o bam_tview_html.o 14PROG= samtools 15INCLUDES= -I. 16SUBDIRS= . bcftools misc 17LIBPATH= 18LIBCURSES= -lcurses # -lXCurses 19 20.SUFFIXES:.c .o 21.PHONY: all lib 22 23.c.o: 24 $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@ 25 26all-recur lib-recur clean-recur cleanlocal-recur install-recur: 27 @target=`echo $@ | sed s/-recur//`; \ 28 wdir=`pwd`; \ 29 list='$(SUBDIRS)'; for subdir in $$list; do \ 30 cd $$subdir; \ 31 $(MAKE) CC="$(CC)" DFLAGS="$(DFLAGS)" CFLAGS="$(CFLAGS)" \ 32 INCLUDES="$(INCLUDES)" LIBPATH="$(LIBPATH)" $$target || exit 1; \ 33 cd $$wdir; \ 34 done; 35 36all:$(PROG) 37 38.PHONY:all lib clean cleanlocal 39.PHONY:all-recur lib-recur clean-recur cleanlocal-recur install-recur 40 41lib:libbam.a 42 43libbam.a:$(LOBJS) 44 $(AR) -csru $@ $(LOBJS) 45 46samtools:lib-recur $(AOBJS) 47 $(CC) $(CFLAGS) -o $@ $(AOBJS) $(LDFLAGS) libbam.a -Lbcftools -lbcf $(LIBPATH) $(LIBCURSES) -lm -lz -lpthread 48 49razip:razip.o razf.o $(KNETFILE_O) 50 $(CC) $(CFLAGS) -o $@ $^ -lz 51 52bgzip:bgzip.o bgzf.o $(KNETFILE_O) 53 $(CC) $(CFLAGS) -o $@ $^ -lz -lpthread 54 55bgzf.o:bgzf.c bgzf.h 56 $(CC) -c $(CFLAGS) $(DFLAGS) -DBGZF_CACHE $(INCLUDES) bgzf.c -o $@ 57 58razip.o:razf.h 59bam.o:bam.h razf.h bam_endian.h kstring.h sam_header.h 60sam.o:sam.h bam.h 61bam_import.o:bam.h kseq.h khash.h razf.h 62bam_pileup.o:bam.h razf.h ksort.h 63bam_plcmd.o:bam.h faidx.h bcftools/bcf.h bam2bcf.h 64bam_index.o:bam.h khash.h ksort.h razf.h bam_endian.h 65bam_lpileup.o:bam.h ksort.h 66bam_tview.o:bam.h faidx.h bam_tview.h 67bam_tview_curses.o:bam.h faidx.h bam_tview.h 68bam_tview_html.o:bam.h faidx.h bam_tview.h 69bam_sort.o:bam.h ksort.h razf.h 70bam_md.o:bam.h faidx.h 71sam_header.o:sam_header.h khash.h 72bcf.o:bcftools/bcf.h 73bam2bcf.o:bam2bcf.h errmod.h bcftools/bcf.h 74bam2bcf_indel.o:bam2bcf.h 75errmod.o:errmod.h 76phase.o:bam.h khash.h ksort.h 77bamtk.o:bam.h 78 79faidx.o:faidx.h razf.h khash.h 80faidx_main.o:faidx.h razf.h 81 82 83libbam.1.dylib-local:$(LOBJS) 84 libtool -dynamic $(LOBJS) -o libbam.1.dylib -lc -lz 85 86libbam.so.1-local:$(LOBJS) 87 $(CC) -shared -Wl,-soname,libbam.so -o libbam.so.1 $(LOBJS) -lc -lz 88 89dylib: 90 @$(MAKE) cleanlocal; \ 91 case `uname` in \ 92 Linux) $(MAKE) CFLAGS="$(CFLAGS) -fPIC" libbam.so.1-local;; \ 93 Darwin) $(MAKE) CFLAGS="$(CFLAGS) -fPIC" libbam.1.dylib-local;; \ 94 *) echo 'Unknown OS';; \ 95 esac 96 97 98cleanlocal: 99 rm -fr gmon.out *.o a.out *.exe *.dSYM razip bgzip $(PROG) *~ *.a *.so.* *.so *.dylib 100 101clean:cleanlocal-recur

もう一つは、ややこしくどこから見ていけばいいのかもわかりません...

makefile

1 2all: 3 cd lib && ${MAKE} 4 cd jkOwnLib && ${MAKE} 5 cd blat && $(MAKE) 6 cd gfClient && $(MAKE) 7 cd gfServer && $(MAKE) 8 cd hg/pslPretty && $(MAKE) 9 cd hg/pslReps && $(MAKE) 10 cd hg/pslSort && $(MAKE) 11 cd utils/nibFrag && $(MAKE) 12 cd utils/faToNib && $(MAKE) 13 cd utils/faToTwoBit && $(MAKE) 14 cd utils/twoBitToFa && $(MAKE) 15 cd utils/twoBitInfo && $(MAKE) 16 cd webBlat && $(MAKE) 17 18clean: 19 rm -f */*.o */*/*.o lib/*/*.a

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

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

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

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

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

emasaka

2018/07/03 11:38

上のMakefileの内容にはinstallというターゲットがないので、`make install`は実行しようがありません。つまり「インストール先」は存在しません。もし省略した部分があれば、そこにないでしょうか。
shotaroh

2018/07/03 14:57

emasaka 様 Makefileの内容はそのまま貼り付けたので特に省略はしていません。make だけで実行する場合は特にインストール先に気をつける必要はないという事でしょうか?
emasaka

2018/07/03 16:03

このMakefileのとおりでしたら、makeではインストールがされないということだと思います
shotaroh

2018/07/03 23:26

ビルドするだけで、インストールはされないということですね。言葉の意味等含め理解できました。ありがとうございます。
guest

回答2

0

インストールに関する記述は無いように見えます。

投稿2018/07/03 11:45

otn

総合スコア84507

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

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

shotaroh

2018/07/03 12:11

make を実行したところ、makefile と同じディレクトリに実行ファイルができました! ご回答ありがとうございます
otn

2018/07/03 12:42

それが普通です。インストールは手動でコピーします。
guest

0

ベストアンサー

make -nで、makeすれば実行されるであろうコマンドが出力されます。たぶんgcc -o hoge/page ...みたいなのが見つかるはずで、実行すればhoge/pageができるのだと分かります。

投稿2018/07/03 10:12

KojiDoi

総合スコア13671

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

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

shotaroh

2018/07/03 12:13

`make -n`で確認しながら行ったところ、makefile と同じディレクトリ内に実行ファイルができました! ご回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問