1

ソースからtrace-cmd.gitをビルドしようとしています。最悪なのは、これを同じマシンで一度ビルドしたことがあるということです。しかし、メモを取っておらず、その間に何が起こったのかわかりません。

だから今、私は再構築しようとしています、そして私は恐ろしいことになります:

trace-cmd$ make
make: *** No rule to make target `/media/disk/trace-cmd/event-parse.c', needed by `event-parse.o'.  Stop.

では、デバッグの内容を見てみましょう:

trace-cmd$ make -d
...
    Successfully remade target file `trace_python_dir'.
    Pruning file `tc_version.h'.
    Considering target file `libparsevent.a'.
      Considering target file `event-parse.o'.
        Pruning file `/media/disk/src/trace-cmd/event-parse.c'.        ## THIS EXISTS!
        Pruning file `.event-parse.d'.
        Considering target file `/media/disk/trace-cmd/event-parse.c'. ## THIS DOESN'T???
         File `/media/disk/trace-cmd/event-parse.c' does not exist.
        ...
          Trying pattern rule with stem `event-parse.w'.
          Trying implicit prerequisite `/media/disk/trace-cmd/SCCS/s.event-parse.w'.
         Trying pattern rule with stem `event-parse'.
         Rejecting impossible implicit prerequisite `/media/disk/trace-cmd/event-parse.w'.
         No implicit rule found for `/media/disk/trace-cmd/event-parse.c'.
         Finished prerequisites of target file `/media/disk/trace-cmd/event-parse.c'.
        Must remake target `/media/disk/trace-cmd/event-parse.c'.
make: *** No rule to make target `/media/disk/trace-cmd/event-parse.c', needed by `event-parse.o'.  Stop.

何が起こっているのですか?もちろん、実際のファイルは存在します:

trace-cmd$ ls -la /media/disk/src/trace-cmd/event-parse.c
-rw-r--r-- 1 user user 121563 2013-03-20 19:03 /media/disk/src/trace-cmd/event-parse.c

…でもこれは!! と:/media/disk/src/trace-cmd/event-parse.c

  • makeすでに一度見つけました。
  • それでもmake、何らかの理由で/src/パスからを削除することにしました。

...そして、そのファイルは明らかに存在しません:

trace-cmd$ ls /media/disk/trace-cmd/event-parse.c
ls: cannot access /media/disk/trace-cmd/event-parse.c: No such file or directory

make元々正しい参照先だったファイルが見つからないように、どのような理由でパスの一部を削除することを決定したのか、誰かが説明してくれますか?

4

1 に答える 1

1

.event-parse.dわかりました-そのファイルに焦点を当てると思いました:

trace-cmd$ head -n 4 .event-parse.d 
event-parse.o: /media/disk/trace-cmd/event-parse.c \
 /usr/include/stdio.h /usr/include/features.h /usr/include/bits/predefs.h \
 /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
 /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h \

.d...そして実際、それは間違ったパスです... このファイルを削除するとどうなりますか?

trace-cmd$ rm .event-parse.d 
trace-cmd$ make
  COMPILE FPIC           event-parse.o
make: *** No rule to make target `/media/disk/trace-cmd/trace-seq.c', needed by `trace-seq.o'.  Stop.

ああ、私の。それらはもっとあるはずです:

trace-cmd$ ls .*.d
.event-parse.d      .plugin_kmem.d          .trace-filter.d      .trace-options.d    .trace-seq.d
.kbuffer-parse.d    .plugin_kvm.d           .trace-ftrace.d      .trace-output.d     .trace-split.d
.kernel-shark.d     .plugin_mac80211.d      .trace-graph.d       .trace-plot-cpu.d   .trace-stack.d
...

...そして確かに、あります。以前のコンパイルから明らかにキャッシュされたファイルで、実際に別のディレクトリにコンパイルしました。そして、それらをすべて削除すると:

trace-cmd$ rm .*.d
trace-cmd$ make
...
gcc --shared event-parse.o trace-seq.o parse-filter.o parse-utils.o trace-util.o trace-input.o trace-ftrace.o trace-output.o trace-recorder.o trace-restore.o trace-usage.o trace-blk-hack.o kbuffer-parse.o ctracecmd_wrap.o -o ctracecmd.so
Note: to build the gui, type "make gui"
      to build man pages, type "make doc"

まあ、それはうまくいったようです。私は再び幸せに戻ってきました:)
乾杯!

于 2013-07-31T04:48:00.423 に答える