[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>