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

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

ただいまの
回答率

90.51%

  • make

    72questions

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

  • makefile

    47questions

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

makefile のインストール先指定

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 164

shotaroh

score 12

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

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

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

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

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

CC=            gcc
CFLAGS=        -g -Wall -O2
#LDFLAGS=        -Wl,-rpath,\$$ORIGIN/../lib
DFLAGS=        -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_USE_KNETFILE -D_CURSES_LIB=1
KNETFILE_O=    knetfile.o
LOBJS=        bgzf.o kstring.o bam_aux.o bam.o bam_import.o sam.o bam_index.o    \
            bam_pileup.o bam_lpileup.o bam_md.o razf.o faidx.o bedidx.o \
            $(KNETFILE_O) bam_sort.o sam_header.o bam_reheader.o kprobaln.o bam_cat.o
AOBJS=        bam_tview.o bam_plcmd.o sam_view.o \
            bam_rmdup.o bam_rmdupse.o bam_mate.o bam_stat.o bam_color.o \
            bamtk.o kaln.o bam2bcf.o bam2bcf_indel.o errmod.o sample.o \
            cut_target.o phase.o bam2depth.o padding.o bedcov.o bamshuf.o \
            bam_tview_curses.o bam_tview_html.o
PROG=        samtools
INCLUDES=    -I.
SUBDIRS=    . bcftools misc
LIBPATH=
LIBCURSES=    -lcurses # -lXCurses

.SUFFIXES:.c .o
.PHONY: all lib

.c.o:
        $(CC) -c $(CFLAGS) $(DFLAGS) $(INCLUDES) $< -o $@

all-recur lib-recur clean-recur cleanlocal-recur install-recur:
        @target=`echo $@ | sed s/-recur//`; \
        wdir=`pwd`; \
        list='$(SUBDIRS)'; for subdir in $$list; do \
            cd $$subdir; \
            $(MAKE) CC="$(CC)" DFLAGS="$(DFLAGS)" CFLAGS="$(CFLAGS)" \
                INCLUDES="$(INCLUDES)" LIBPATH="$(LIBPATH)" $$target || exit 1; \
            cd $$wdir; \
        done;

all:$(PROG)

.PHONY:all lib clean cleanlocal
.PHONY:all-recur lib-recur clean-recur cleanlocal-recur install-recur

lib:libbam.a

libbam.a:$(LOBJS)
        $(AR) -csru $@ $(LOBJS)

samtools:lib-recur $(AOBJS)
        $(CC) $(CFLAGS) -o $@ $(AOBJS) $(LDFLAGS) libbam.a -Lbcftools -lbcf $(LIBPATH) $(LIBCURSES) -lm -lz -lpthread

razip:razip.o razf.o $(KNETFILE_O)
        $(CC) $(CFLAGS) -o $@ $^ -lz

bgzip:bgzip.o bgzf.o $(KNETFILE_O)
        $(CC) $(CFLAGS) -o $@ $^ -lz -lpthread

bgzf.o:bgzf.c bgzf.h
        $(CC) -c $(CFLAGS) $(DFLAGS) -DBGZF_CACHE $(INCLUDES) bgzf.c -o $@

razip.o:razf.h
bam.o:bam.h razf.h bam_endian.h kstring.h sam_header.h
sam.o:sam.h bam.h
bam_import.o:bam.h kseq.h khash.h razf.h
bam_pileup.o:bam.h razf.h ksort.h
bam_plcmd.o:bam.h faidx.h bcftools/bcf.h bam2bcf.h
bam_index.o:bam.h khash.h ksort.h razf.h bam_endian.h
bam_lpileup.o:bam.h ksort.h
bam_tview.o:bam.h faidx.h bam_tview.h
bam_tview_curses.o:bam.h faidx.h bam_tview.h
bam_tview_html.o:bam.h faidx.h bam_tview.h
bam_sort.o:bam.h ksort.h razf.h
bam_md.o:bam.h faidx.h
sam_header.o:sam_header.h khash.h
bcf.o:bcftools/bcf.h
bam2bcf.o:bam2bcf.h errmod.h bcftools/bcf.h
bam2bcf_indel.o:bam2bcf.h
errmod.o:errmod.h
phase.o:bam.h khash.h ksort.h
bamtk.o:bam.h

faidx.o:faidx.h razf.h khash.h
faidx_main.o:faidx.h razf.h


libbam.1.dylib-local:$(LOBJS)
        libtool -dynamic $(LOBJS) -o libbam.1.dylib -lc -lz

libbam.so.1-local:$(LOBJS)
        $(CC) -shared -Wl,-soname,libbam.so -o libbam.so.1 $(LOBJS) -lc -lz

dylib:
        @$(MAKE) cleanlocal; \
        case `uname` in \
            Linux) $(MAKE) CFLAGS="$(CFLAGS) -fPIC" libbam.so.1-local;; \
            Darwin) $(MAKE) CFLAGS="$(CFLAGS) -fPIC" libbam.1.dylib-local;; \
            *) echo 'Unknown OS';; \
        esac


cleanlocal:
        rm -fr gmon.out *.o a.out *.exe *.dSYM razip bgzip $(PROG) *~ *.a *.so.* *.so *.dylib

clean:cleanlocal-recur

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

all:
        cd lib && ${MAKE}
        cd jkOwnLib && ${MAKE}
        cd blat && $(MAKE)
        cd gfClient && $(MAKE)
        cd gfServer && $(MAKE)
        cd hg/pslPretty && $(MAKE)
        cd hg/pslReps && $(MAKE)
        cd hg/pslSort && $(MAKE)
        cd utils/nibFrag && $(MAKE)
        cd utils/faToNib && $(MAKE)
        cd utils/faToTwoBit && $(MAKE)
        cd utils/twoBitToFa && $(MAKE)
        cd utils/twoBitInfo && $(MAKE)
        cd webBlat && $(MAKE)

clean:
        rm -f */*.o */*/*.o lib/*/*.a
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • emasaka

    2018/07/03 20:38

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

    キャンセル

  • shotaroh

    2018/07/03 23:57

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

    キャンセル

  • emasaka

    2018/07/04 01:03

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

    キャンセル

  • shotaroh

    2018/07/04 08:26

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

    キャンセル

回答 2

checkベストアンサー

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/03 21:13

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

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/03 21:11

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

    キャンセル

  • 2018/07/03 21:42

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

    キャンセル

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

  • ただいまの回答率 90.51%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • make

    72questions

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

  • makefile

    47questions

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