| ブログ - 最新エントリ |
最新エントリ配信 |
最新エントリ
2006/04/17
|
カテゴリ: Miscellaneous :
執筆者: unix (5:08 pm)
|
OpenLDAPのconfigure時にBDBのバージョンミスマッチの後に さらにmakeでもエラーが出てしまうという 今までにない苦労を強いられる・・・ solaris10上でOpenLDAPをmakeしたときに ---->make時のエラー<----------- Making all in /var/tmp/openldap/openldap-2.3.20 Entering subdirectory include Entering subdirectory libraries Making all in /var/tmp/openldap/openldap-2.3.20/libraries Entering subdirectory liblutil Entering subdirectory liblber Entering subdirectory liblunicode make: Fatal error: Don't know how to make target `*/ucgendat.c' Current working directory /var/tmp/openldap/openldap-2.3.20/libraries/liblunicode *** Error code 1 The following command caused the error: for i in liblutil liblber liblunicode libldap libldap_r librewrite ; do echo " Entering subdirectory $i"; ( cd $i; make all ); if test $? != 0 ; then exit 1; fi ; echo " "; done make: Fatal error: Command failed for target `all-common' Current working directory /var/tmp/openldap/openldap-2.3.20/libraries *** Error code 1 The following command caused the error: for i in include libraries clients servers tests doc ; do echo " Entering subdirectory $i"; ( cd $i; make all ); if test $? != 0 ; then exit 1; fi ; echo " "; done make: Fatal error: Command failed for target `all-common' ----------------------------------- と出てしまう。他のシステムでは出ないらしい。 そこで まずはmakeは/usr/ccs/bin/makeを使っていたので GNUmakeをインストール。 さらに $SRCDIR/libraries/liblunicode/Makefile.in を書き換える。 18行目 <変更前> #XXDIR = $(srcdir)/*/ <変更後> XXDIR = $(srcdir)/ucdata/ 44行目 <変更前> $(LN_S) $(XXDIR)$$i . ; <変更後> ii=`find . -name $$i` ; $(LN_S) $$ii . ; としてしまう。 そしてもう一度最初から configure make depend make make install を行うことでコンパイルが無事にいける。 どうもワイルドカードの指定の部分が悪かったらしい。 なんとも苦労したOpenLDAPのコンパイルであった。 |
2006/04/17
|
カテゴリ: Miscellaneous :
執筆者: unix (4:09 pm)
|
いまどきSolaris使うのかって話はおいといて 久しぶりにsolaris10上でコンパイルしてみました。 OpenLDAPの最新安定版です。 Solaris10はOSインストールしてRecommended当てた 生まれたままの状態。 そこに PATH=$PATH:/usr/sfw/bin LD_LIBRARY_PATH=/usr/sfw/lib をしている状態。 つまりgccなんかもOSに付属のものを使ったわけ。 なので export CPPFLAGS=-I/usr/local/BerkeleyDB.4.4/include export LDFLAGS=-L/usr/local/BerkeleyDB.4.4/lib export PATH=/usr/local/BerkleyDB.4.4/bin を実行してからconfigureする。 が、しかし、いくらconfigureしても通らない。 BDBのバージョンがミスマッチだとでる。 ---->Berkeley DB version mismatchのエラー<----- checking for ctime_r... yes checking for gethostbyname_r... yes checking for gethostbyaddr_r... yes checking number of arguments of ctime_r... 3 checking number of arguments of gethostbyname_r... 5 checking number of arguments of gethostbyaddr_r... 7 checking db.h usability... yes checking db.h presence... yes checking for db.h... yes checking for Berkeley DB major version... 4 checking for Berkeley DB minor version... 4 checking for Berkeley DB link (-ldb44)... no checking for Berkeley DB link (-ldb-44)... no checking for Berkeley DB link (-ldb-4.4)... yes checking for Berkeley DB version match... no configure: error: Berkeley DB version mismatch config.logをみるとなんだかldがどうも悪そうに見える。 なので coreutilsをインストールしてからconfigureするとうまくいった。 ググっても export CPPFLAGS=-I/usr/local/BerkeleyDB.4.4/include export LDFLAGS=-L/usr/local/BerkeleyDB.4.4/lib をするのを忘れてるだけ。 なので今回はcoreutilsを入れてGNUldを入れることで 解決したような感じ。 うーん、あってんのかなあ。 | #if DB_VERSION_MAJOR > 1 | { | char *version; | int major, minor, patch; | | version = db_version( &major, &minor, &patch ); | | if( major != DB_VERSION_MAJOR || | minor < DB_VERSION_MINOR ) | { | printf("Berkeley DB version mismatchn" | "theader: %sntlibrary: %sn", | DB_VERSION_STRING, version); | return 1; | } | } この辺見てもよくわかんないなあ・・・ とりあえずcoreutils入れて/usr/local/binをPATHに通した後にconfigureすると --------------------- checking for Berkeley DB major version... 4 checking for Berkeley DB minor version... 4 checking for Berkeley DB link (-ldb44)... no checking for Berkeley DB link (-ldb-44)... no checking for Berkeley DB link (-ldb-4.4)... yes checking for Berkeley DB version match... yes checking for Berkeley DB thread support... yes checking Berkeley DB version for BDB/HDB backends... yes ・ ・ ・ ------------------ とうまくいったようです。 |











