玄箱Pro、直します。

超初心者が、玄箱PROでLinuxを勉強する無謀なブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
別窓 | スポンサー広告
∧top | under∨

標準ファームにlighttpd(3)

標準ファーム・フラッシュブートの環境でlighttpdを導入しようとしています。

えー、一応前回までのあらすじ。

標準ファーム・フラッシュブートの状態でHDDを背面リセットボタンで初期化し、CD-ROM付属のhddrootfs.tar.gzをマウントされたdisk1に展開し、開発環境を作り、

chroot /mnt/disk1/devel


としてdevel以下で

・GNU wget-1.10.2を導入
・GNU tar-1.16を導入
・GNU binutils-2.17を導入
・bashをshのリンクに


としてlighttpd(最新版として1.4.16)を導入しようとしていました。
すると、configureで

checking how to run the C preprocessor... /lib/cpp
configure: error: C preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details.


とエラーが出てここから先に進めない、とここまでが前回までのあらすじです(笑)。

まず、何からどう調べたらいいのか、これがわかりません。
ひとまず片っ端からググってはみたのですが、いまいち現象が違うようで、しっくりきません。
ひとまず与えられた検証材料といえばconfig.logくらいなので、遠回りなのか正道なのかわかりませんが、まずはこれから解読してみようかと思います。

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
「このファイルはコンフィギュア中にコンパイラによって生成されたいくつかのメッセージを含んでおり、コンフィギュアに失敗した場合にはデバッグの助けとなります。」


ぜひ助けになってください。

It was created by lighttpd configure 1.4.16, which was
generated by GNU Autoconf 2.61. Invocation command line was

$ ./configure
「GNU Autoconf 2.61によって生成されたlighttpdコンフィギュア1.4.16によって作られています。起動コマンドラインは
$ ./configure
です。」


Autoconfというものもあるんですね・・。
ああ・・いきなりこんなんで大丈夫なんだろうか・・。

Platform.は訳したり検証するものがありませんのでひとまず飛ばします。

## ----------- ##
## Core tests. ##
## ----------- ##


Core tests・・意味はわかりませんがズラズラ~と続きます。
見たところ「checking」で始まり「result」で終わるパターンの羅列っぽいので、これをブロック単位で読んでみます。

configure:2054: checking build system type
configure:2072: result: armv5tejl-unknown-linux-gnu
「調査 ビルドシステムタイプ
結果 armv5tejl-unknown-linux-gnu

configure:2094: checking host system type
configure:2109: result: armv5tejl-unknown-linux-gnu
「調査 ホストシステムタイプ
結果 armv5tejl-unknown-linux-gnu」

configure:2131: checking target system type
configure:2146: result: armv5tejl-unknown-linux-gnu
「調査 ターゲットシステムタイプ
結果 armv5tejl-unknown-linux-gnu」


ここはarmv5tejl-unknown-linux-gnuの連続ですね。
要するに玄箱PROそのもののLinux情報なんでしょうか。

configure:2190: checking for a BSD-compatible install
configure:2246: result: /usr/bin/install -c
「調査 BSD互換install
結果 /usr/bin/install -c」


Linuxを勉強しているとこのBSDという単語は自然と覚えてしまいますが、この/usr/bin/installに-cというオプションらしきものをつけて「結果」としている調査項目は何の事だかさっぱりわかりません。
確認してみると/usr/bin/installがありました。
--helpで-cの説明を見てみると「copy the file, default」だそうで・・。
だめだ・・私には何のヒントにもならない(笑)。

configure:2257: checking whether build environment is sane
configure:2300: result: yes
「調査 ビルド環境が正常かどうか
結果 はい」


これも難しいです。
ビルド環境が正常、とは何を指して言えるんでしょうね・・。
開発環境が整っていないとそもそもconfigureはできないとも思えるんですが・・。

configure:2328: checking for a thread-safe mkdir -p
configure:2367: result: ./install-sh -c -d
「調査 thread-safe mkdir -p
結果 ./install-sh -c -d」


thread-safeが何かわかりません。
mkdirに-pオプションを付けると、「no error if existing, make parent directories as needed」ということで、「すでに存在しているディレクトリでもエラーなしで作成する」という命令になるそうです。
この結果が「./install-sh -c -d」とは・・。
lighttpdディレクトリの中に「install-sh」がありましたので--helpしてみました。

/src/lighttpd-1.4.16 # ./install-sh --help
Usage: ./install-sh [OPTION]... [-T] SRCFILE DSTFILE
or: ./install-sh [OPTION]... SRCFILES... DIRECTORY
or: ./install-sh [OPTION]... -t DIRECTORY SRCFILES...
or: ./install-sh [OPTION]... -d DIRECTORIES...

In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.

Options:
-c (ignored)
-d create directories instead of installing files.
-g GROUP chgrp installed files to GROUP.
-m MODE chmod installed files to MODE.
-o USER chown installed files to USER.
-s strip installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
--help display this help and exit.
--version display version info and exit.

Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG


これを見る限り、-cはignoredということで「無視する」、-dはcreate directories instead of installingということで「インストールするかわりにディレクトリの作成」らしいです。
あぁぁ、これってmkdir -pと一緒のことかも。
んん~。いまいち理解できませんねぇ・・。

configure:2380: checking for gawk
configure:2410: result: no
「調査 gawk
結果 いいえ」

configure:2380: checking for mawk
configure:2410: result: no
「調査 mawk
結果 いいえ」

configure:2380: checking for nawk
configure:2410: result: no
「調査 nawk
結果 いいえ」

configure:2380: checking for awk
configure:2396: found /usr/bin/awk
configure:2407: result: awk
「調査 awk
発見 /usr/bin/awk
結果 awk」


awkというスクリプト言語とその実装、とWikipediaに載ってました(笑)。
結局これは「awkはあるか?」「ここにあるよ」「あったよ」というやりとりなんでしょうね。

configure:2418: checking whether make sets $(MAKE)
configure:2439: result: yes
「調査 make sets $(MAKE)
結果 はい」


$(MAKE)とは変数でしょうか。さっぱりわかりませんが、「makeが$(MAKE)にセットされているか?」という質問でしょうか。
またもやパス。

configure:2631: checking whether to enable maintainer-specific portions of Makefiles
configure:2640: result: no
「調査 Makefile達の調整特化部分が動作可能か
結果 いいえ」


いやいや、訳も相当アブナイっすよ、これ(笑)。
何の事かわからないものを訳すのって難しいですね・・。
さっぱりわかりません。

configure:2703: checking for gcc
configure:2719: found /usr/bin/gcc
configure:2730: result: gcc
「調査 gcc
発見 /usr/bin/gcc
結果 gcc」


これはさっきのawkと一緒ですかね。
gccあったよー、って感じのほのぼのトークですか。

configure:2968: checking for C compiler version
「調査 Cコンパイラのバージョン」
configure:2975: gcc --version >&5
gcc (GCC) 3.4.4 (release) (CodeSourcery ARM 2005q3-2)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:2978: $? = 0
「gcc --version >&5
gcc(GCC) 3.4.4 (リリース)(ARM 2005q3-2用コード)
Copyright (C) 2004 Free Software Foundation, Inc.
これはフリーソフトです。コピー条件をソースより確認してください。保証はありません。販売あるいは特定の目的の適合はその限りではありません。
終了ステータス 正常」

configure:2985: gcc -v >&5
Reading specs from /usr/lib/gcc/arm-none-linux-gnueabi/3.4.4/specs
Configured with: ../gcc-2005q3/configure --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --build=i386-pc-linux-gnu --enable-languages=c,c++ --prefix=/usr
Thread model: posix
gcc version 3.4.4 (release) (CodeSourcery ARM 2005q3-2)
configure:2988: $? = 0
「gcc -v >&5
/usr/lib/gcc/arm-none-linux-gnueabi/3.4.4/specsからスペックの読み込み
コンフィギュア: ../gcc-2005q3/configure --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --build=i386-pc-linux-gnu --enable-languages=c,c++ --prefix=/usr
Threadモデル:posix
gccバージョン 3.4.4 (リリース)(ARM 2005q3-2用コード)
終了ステータス 正常」

configure:2995: gcc -V >&5
gcc: `-V' option must have argument
configure:2998: $? = 1
「gcc -V >&5
gcc: -Vオプションには引数が必要です
終了ステータス 異常」


稚拙な訳で分かりづらいですが(笑)。
ここのブロックはresultがないっぽいので、終了ステータスだと思われる「$?=」で区切ってみました。
要するにgccに--version、-v、-Vのオプションを与えてその反応を結果としているようです。
このブロックで不明なことは、

1.「>&5」が何を意味するのか
まだ理解できませんが、シェルスクリプトのリダイレクトと関係がある項目でしょうか・・。

2.「Threadモデル:posix」とは、posix規格でありANSI/ISOとは違うのか
いや、知ったような書き方してますが、後々出てくる「You need a ISO C conforming compiler to use the glibc headers」エラー文に関係するのかなぁ、と思いまして今のうちに押さえておきました(笑)。

configure:3021: checking for C compiler default output file name
configure:3048: gcc conftest.c >&5
configure:3051: $? = 0
configure:3089: result: a.out
「調査 Cコンパイラ初期設定出力ファイル名
gcc conftest.c >&5
終了ステータス 正常
結果 a.out」

configure:3106: checking whether the C compiler works
configure:3116: ./a.out
configure:3119: $? = 0
configure:3136: result: yes
「調査 Cコンパイラが作動するかどうか
./a/out
終了ステータス 正常
結果 はい」

configure:3143: checking whether we are cross compiling
configure:3145: result: no
「調査 クロスコンパイルしているか
結果 いいえ」

configure:3148: checking for suffix of executables
configure:3155: gcc -o conftest conftest.c >&5
configure:3158: $? = 0
configure:3182: result:
「調査 実行ファイルのサフィックス
gcc -o conftest conftest.c >&5
終了ステータス 正常
結果 」

configure:3188: checking for suffix of object files
configure:3214: gcc -c conftest.c >&5
configure:3217: $? = 0
configure:3240: result: o
「調査 オブジェクトファイルのサフィックス
gcc -c conftest.c >&5
終了ステータス 正常
結果 o」

configure:3244: checking whether we are using the GNU C compiler
configure:3273: gcc -c conftest.c >&5
configure:3279: $? = 0
configure:3296: result: yes
「調査 GNU Cコンパイラを使っているか
gcc -c conftest.c >&5
終了ステータス 正常
結果 はい」

configure:3301: checking whether gcc accepts -g
configure:3331: gcc -c -g conftest.c >&5
configure:3337: $? = 0
configure:3436: result: yes
「調査 gccが-gオプションを許可しているか
gcc -c -g conftest.c >&5
終了ステータス 正常
結果 はい」

configure:3453: checking for gcc option to accept ISO C89
configure:3527: gcc -c -g -O2 conftest.c >&5
configure:3533: $? = 0
configure:3556: result: none needed
「調査 gccオプションがISO C89を許可しているか
gcc -c -g -O2 conftest.c >&5
終了ステータス 正常
結果 必要なし」

configure:3585: checking for style of include used by make
configure:3613: result: GNU
「調査 makeで使用されるインクルードのスタイル
結果 GNU」

configure:3638: checking dependency style of gcc
configure:3729: result: gcc3
「調査 gccの従属スタイル
結果 gcc3」

configure:3744: checking for a sed that does not truncate output
configure:3798: result: /bin/sed
「調査 出力を切り捨てないsed
結果 /bin/sed」

configure:3801: checking for grep that handles long lines and -e
configure:3875: result: /bin/grep
「調査 長い入力や-eを扱うgrep
結果 /bin/grep」

configure:3880: checking for egrep
configure:3958: result: /bin/grep -E
「調査 egrep
結果 /bin/grep -E」

configure:3974: checking for ld used by gcc
configure:4041: result: /usr/bin/ld
「調査 gccに使用されるld
結果 /usr/bin/ld」

configure:4050: checking if the linker (/usr/bin/ld) is GNU ld
configure:4065: result: yes
「調査 リンカー(/usr/bin/ld)はGNU ldか
結果 はい」

configure:4083: checking for a BSD-compatible install
configure:4139: result: /usr/bin/install -c
「調査 BSD互換install
結果 /usr/bin/install -c」

configure:4154: checking for gawk
configure:4181: result: awk
「調査 gawk
結果 awk」


最初の「初期設定の出力ファイル名」はそのまんまですね。
a.outとなれば正常、ということです。

その次に、実際にこのa.outを実行してCコンパイラが正常に作動しているかを調べています。

そしてクロスコンパイルかどうかの確認、そして
gcc -o conftest conftest.c >&5
を実行して実行ファイルconftestのサフィックスを求めていますが、これがよくわからないんですが・・。
最初からgcc -o conftest conftest.c、つまり「conftest.cをconftestという実行ファイルにコンパイル」としていますよね。
どうしてサフィックスを求めておきながらサフィックスを付けない指定をして、結果として空白(つまり「なし」)を返すのか理解できません。
この一連の作業に何の意味があるのでしょうか・・。

次はリンクせずにコンパイルする-cオプションをつけてオブジェクトファイルのサフィックスを求めます。結果は「o」で正常です。
同じテスト命令文でGNUのCコンパイラかどうか調べています。
そして次。

-gオプションが使えるかどうか、らしいですが、この-gオプションがわからなかったので調べました。
Manpage of GCC

-g
オペレーティングシステムのネイティブのフォーマット (stabs, COFF, XCOFF, DWARF) でデバッグ情報を生成します。GDB はこのデバッグ情報に基づいて動作することができます。

stabs フォーマットを使用するほとんどのシステムにおいては、`-g' を指定すると、GDB だけが使用できる余分なデバッグ情報が使用可能になります。この特別の情報は GDB に対してはよりよいデバッグを行なうことを可能としますが、おそらく他のデバッガに対してはクラッシュ、あるいはそのプログラムを読めなくしてしまいます。この特別な情報の生成を制御するためには `-gstabs+', `-gstabs', `-gxcoff+', `-gxcoff', `-gdwarf+', `-gdwarf' を使用してください (下記参照)。

他の多くの C コンパイラと異なり、GNU CC は `-g' を `-O' とともに使用することを許しています。最適化されたコードが通る近道は、時には驚くべき結果を生み出すかもしれません。定義したはずの変数が存在しなかったり、制御の流れが予想もしなかった場所に移動したり、結果が定数とわかる計算や、結果がすでに手元にある文は実行されなくなり、ある文がループの外に追い出されて別の場所で実行されたりします。

それにも関わらず、このオプションは最適化された出力のデバッグを可能としています。これによって、バグを含むかもしれないプログラムに対してオプティマイザを使用することができるようになります。


とありましたが・・・まっっっったくわかりません(笑)。
まぁ「使える」らしいのでそれでいいです。

次はISO C89を許可しているか、ですが、さっきの-gの項目でこの-Oに触れていましたね。
先述の「自分で作るLinuxOS」という本には「Makefile中に最適化レベルの項目があり、-O2あるいは-O3とすればそれぞれ最適化レベルを2、3に指定したことになる」とあったので、gccのオプションだとは知りませんでした(汗)。
この-OオプションでISO C89を許可うんぬんがわかる、という前提がすでにわかりません・・・はぁ。
またまた宿題にします。

makeで使われるインクルード。
インクルードは一般英単語として訳すのか、C言語に出てくる#includeなのかわからなかったのでカタカナで濁しました(笑)。
つまりここの意味もまったくわかりません、はい。

gcc3というのは結局バージョンの大別のことでしょうか。

sedとは「stream editor」の略・・だと思います。ネットで検索したらこう言われたので(笑)。

そして-eオプションを扱うgrepを調べています。
またまた-eが何を出力するのか調べてみました。
Manpage of GREPによると

-e PATTERN, --regexp=PATTERN
PATTERN をパターンとして指定します。 - で始まるパターンを保護するために有効です。


パターン入力の支援オプションっぽいです。
いや、よくわかりません・・。

次はegrepの調査です。先ほどのManpage of GREPにも

egrep は grep -E と同じです。


と身も蓋もないことを書いています。確かに結果でもそう言ってます。
では-Eオプションとは何なのでしょうか?

-E, --extended-regexp
PATTERN を拡張された正規表現として扱います (下記参照)。


とのこと。正規表現をgrepに使える、どうやらこれも支援のためのオプションです。

gccが使うld、そのld(リンカー)はGNUか調べて、またBSD互換installです。最初に調査したハズなのにここでもまた調べるんですかね・・。それとも最初のものとは違うのかな。

そしてgawkはawkだ、ということ。これも最初に「gawkはない」としていたので、gawkとくればawkが応答する、ということなんでしょうか。

~このエントリは今後も追記でつづきます。~
スポンサーサイト
別窓 | 標準ファームで遊ぶ | コメント:0 | トラックバック:0
∧top | under∨
<<標準ファームにapache(1) | 玄箱Pro、直します。 | 標準ファームにlighttpd(2)>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

トラックバックURL

FC2ブログユーザー専用トラックバックURLはこちら
∧top | under∨
| 玄箱Pro、直します。 |
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。