[PHP-users 13243] Re: PDFLIBのインストール
HOTTA Michihide
php-users@php.gr.jp
Thu, 13 Feb 2003 15:54:20 +0900
堀田@諫早市です。
すでにもりさんからフォローしていただいたんですが、せっかく書いた
ので出します。
On Thu, 13 Feb 2003 12:56:47 +0900
Subject: [PHP-users 13240] Re: PDFLIBのインストール
"Hidemichi Matsui" <Hidemichi_Matsui@kip.com> wrote:
> 松井です。
うまくいってよかったですね(^^;
> あと、よろしければ教えて頂きたいのですが、
>
> > configure:6192: checking for TIFFOpen in -ltiff
> > configure:6211: gcc -o conftest -g -O2 conftest.c -ltiff 1>&5
> > /usr/bin/ld: cannot find -ltiff
> > collect2: ld returned 1 exit status
>
> 上記エラーから、
>
> > sudo rpm -Uvh /mnt/cdrom/RedHat/RPMS/libtiff-devel-3.5.7-7.i386.rpm
>
> この答えが出たのは何故でしょうか?
cannot find -lXXXX
は、ライブラリ libXXXX.a が見つからないというエラーです。なぜ
XXXX が libXXXX.a になるのかは、man gcc または man ld の -l オプ
ションをご覧ください。
ここでは libtiff.a が見つからないといっています。tiff 関連のパッ
ケージで入っているのは
> $ rpm -qa|grep tiff
> libtiff-3.5.7-7
だけですから、その中に libtiff.a が入っているかどうかを見てみると、
$ rpm -ql libtiff | grep libtiff.a
と、やっぱり入っていません。このため CD の中身を ls libtiff* して
所望のものを探します。
一般的に、ライブラリ(*.a)やヘッダファイル(*.h)は実行には不要なの
で、インストール時の余計な依存関係のトラブルを避けるためにも?、
rpm な世界ではこれらを XXXX.rpm には入れないで、XXXX-devel.rpm と
いう別のパッケージを作って提供するという習慣があります。
> それと、
>
> > LDFLAGS=-lm ./configure .... ( -lm オプションを渡してやる)
>
> この「LDFLAGS=-lm」の意味もよろしければ教えて頂けないでしょうか?
> undefined reference to `log'
> undefined reference to `pow'
> undefined reference to `exp'
これは、(上記の libtiff.a )ライブラリ自体は見つかったが、リンク
処理を行った結果、未解決の外部参照(別のソースに実体のある変数名
や関数名)があったということを表します。
log とか pow とかは数学関連の関数名で、これらは libm に入っている
らしいというのを昔どこかの ML か何かで聞いたような気がした(このあ
たりが文系の弱いところ:-)ので、-lm (リンク時に libm.a を参照させ
る)を思いつきました。
LDFLAGS = -lm ./configure ....
は ./configure というコマンドを実行するにあたり、LDFLAGS という環
境変数にあらかじめ -lm をセットするという意味です。で、configure
スクリプトの中を見ると
ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS \
$LDFLAGS conftest.$ac_ext $LIBS 1>&5'
という記述があちこちにあるので、CFLAGS, CPPFLAGS, LDFLAGS はそれ
ぞれ C コンパイラ(cc)、プリプロセッサ(cpp)、リンカ(ld) に渡すフラ
グとして使われているのをいろんな Makefile で見ているので、まあこ
んな感じものかなあ、と。ちなみに man -k LDFLAGS で探してみたので
すが見つかりませんでした(汗)。
--
HOTTA Michihide <hotta@net-newbie.com> <http://www.net-newbie.com>