アニメ『Fate/stay night』(2014)
Zeroの方を先に見ていたので、すぐに内容に入っていけました。ああ、でもプリズマイリヤを最初に見たものだから、イリヤの参戦に驚いたのなんのって。設定が違うんですね。
2006年の1作目と同時に、夢中になって見ています。fateってどういう意味か辞書で調べると、運命とか宿命のようです。しかも変えることができない悲運的な意味も入っています。セイバールートは、fateというらしいのですが、変えられない運命という意味が込められているのでしょうか。
さてフェイトっていう発音がどこかで聞いたことがあるなあ、と考えていたら、fatal error(ファイタルエラー)を思い出しました。綴りも意味もよく似てるので、きっとfatalはfateから来てる言葉なんでしょうね。
gcc使う時にfatal errorをよく見かける気がします。どのような時に表示されるエラーメッセージなのでしょうか。とりあえずgccだけ入力してENTERしてみましょう。
takk@deb9:~$ gcc gcc: fatal error: no input files compilation terminated. takk@deb9:~$
あ、出ました。fatal error。ということは、このメッセージをキーワードに検索すればよいですね。
検索するのにgccのソースが必要なので、まずは、gccをダウンロードします。
今回はv7.3.0を使うことにします。
takk@deb9:~$ mkdir gcc;cd gcc takk@deb9:~/gcc$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz
伸長します。
takk@deb9:~/gcc$ ls gcc-7.3.0.tar.gz takk@deb9:~/gcc$ tar xzf gcc-7.3.0.tar.gz takk@deb9:~/gcc$ ls gcc-7.3.0 gcc-7.3.0.tar.gz takk@deb9:~/gcc$ cd gcc-7.3.0/ takk@deb9:~/gcc/gcc-7.3.0$
さて”no input files”を足がかりに検索していきましょう。
takk@deb9:~/gcc/gcc-7.3.0$ grep -r 'no input files' * | head gcc/fortran/gfortranspec.c: "no input files; unwilling to write output files"); gcc/fortran/gfortranspec.c: /* If there are no input files, no need for the library. */ gcc/gcc.c: fatal_error (input_location, "no input files"); gcc/ChangeLog-1998: (main): Use added_libraries in check for no input files. gcc/po/fr.po:msgid "no input files" gcc/po/fr.po:msgid "no input files; unwilling to write output files" gcc/po/be.po:msgid "no input files" gcc/po/be.po:msgid "no input files; unwilling to write output files" gcc/po/fi.po:msgid "no input files" gcc/po/fi.po:#| msgid "no input files" takk@deb9:~/gcc/gcc-7.3.0$
メッセージIDが書かれているファイルが見つかりました。fr.poとかbe.poとか。
ファイル名のfrとかきっとフランス語ってことでしょう。ってことはja(日本語)もありますね。
fr.poの冒頭をみてみます。
takk@deb9:~/gcc/gcc-7.3.0$ head gcc/po/fr.po # This file is distributed under the same license as the gcc package. # # Messages francais pour GNU concernant gcc. # Copyright c 2017 Free Software Foundation, Inc. # # Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur depuis/since 1996. # Francois-Xavier Coudert <fxcoudert@gmail.com>, 2008. # Stephane Aulery <lkppo@free.fr>, 2015, 2016. # Frederic Marchal <fmarchal@perso.be>, 2017. # takk@deb9:~/gcc/gcc-7.3.0$
1行目であっ英語だ、と思ってたら、3行目で、もう意味が分かりません。
英語みたいなのに、フランス語なのでしょうか。諦めて、他のファイルを見ることにします。
ja.poの冒頭です。
takk@deb9:~/gcc/gcc-7.3.0$ head gcc/po/ja.po # Japanese messages for GNU gcc # Copyright (C) 1999, 2010, 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the gcc package. # # gcc では解釈される書式文字列が数種類あります # (1) gcc/pretty-print.c 内にある pp_printf() # (2) gettext のドキュメントにある書式 # http://www.gnu.org/software/gettext/manual/gettext.html#gcc_002dinternal_002dformat # (3) gcc/tree-pretty-print.c 内にある percent_K_format() # c-format フラグがあっても位置パラメータ (%1$s, %2$d) などは使わないことを推奨します takk@deb9:~/gcc/gcc-7.3.0$
ああ良かった。英語+日本語の安心感。
では例のメッセージIDの辺りを見てみましょう。
20966 #: gcc.c:8006 20967 #, gcc-internal-format 20968 msgid "no input files" 20969 msgstr "入力ファイルがありません"
メッセージIDと各国語の文字列がセットになってるんですね。
このファイルからもちろんfatalかどうかは分からないので、fatalという単語と、no input filesが同時に登場する行を検索してみます。
takk@deb9:~/gcc/gcc-7.3.0$ grep -r 'fatal.*no input files' * gcc/gcc.c: fatal_error (input_location, "no input files"); takk@deb9:~/gcc/gcc-7.3.0$
見つかりました。fatal_errorを見つければ、fatalなメッセージが見つかるということです。
takk@deb9:~/gcc/gcc-7.3.0$ grep -r '\<fatal_error.*".*' * | head gcc/ChangeLog-2003: calls to fatal_error; add ": %m" to the end of all the affected gcc/fortran/f95-lang.c: fatal_error (input_location, "can't open input file: %s", gfc_source_file); gcc/fortran/gfortranspec.c: fatal_error (input_location, "overflowed output arg list for %qs", gcc/fortran/trans-expr.c: fatal_error (input_location, "Unknown intrinsic op"); gcc/collect-utils.c: fatal_error (input_location, "can't get program status: %m"); gcc/collect-utils.c: fatal_error (input_location, "%s terminated with signal %d [%s]%s", gcc/collect-utils.c: fatal_error (input_location, "%s returned %d exit status", prog, ret); gcc/collect-utils.c: fatal_error (input_location, "could not open response file %s", gcc/collect-utils.c: fatal_error (input_location, "could not write to response file %s", gcc/collect-utils.c: fatal_error (input_location, "could not close response file %s", takk@deb9:~/gcc/gcc-7.3.0$
これでfatal errorの探し方は分かりました。運命も変えられます。
コメント