dポイントプレゼントキャンペーン実施中!

プログラム初心者です。
Solaris10にOpenLDAPを導入する作業をしています。OpenLDAPのバックエンドにMySQL Clusterを利用しようとしているのですが設定の部分でエラーが発生してしまい、長いこと先に進んでいません。
内容は以下です。

./configure --enable-ndb=yes --enable-bdb=no --enable-hdb=no
・・・(省略)

configure:21927: result: no
configure: error: could not locate ndbclient library


**config.logの内容:
・・・(省略)
Undefined first referenced
symbol in file
__1cG__CrunKvector_des6FpvLLpF1_v_v_ /mysql/mysqlc/lib/libndbclient.so
__1cG__CrunKvector_con6FpvLLpF1_vp2_v_ /mysql/mysqlc/lib/libndbclient.so
__1cG__CrunKvector_del6FpvLpF1_v_1_ /mysql/mysqlc/lib/libndbclient.so
__1cG__CrunKvector_new6FpvLLpF1_vp2_1_ /mysql/mysqlc/lib/libndbclient.so
__1c2n6FLpv_0_ /mysql/mysqlc/lib/libndbclient.so
__1c2N6FLpv_0_ /mysql/mysqlc/lib/libndbclient.so
__1cG__CrunJzero_ptrs6FpvL_v_ /mysql/mysqlc/lib/libndbclient.so
__1cG__CrunSregister_exit_code6FpG_v_v_ /mysql/mysqlc/lib/libndbclient.so
__1cDstdFqsort6FpvLLpFpkv3_i_v_ /mysql/mysqlc/lib/libndbclient.so
__1c2N6FL_pv_ /mysql/mysqlc/lib/libndbclient.so
__1c2n6FL_pv_ /mysql/mysqlc/lib/libndbclient.so
__1c2K6Fpv_v_ /mysql/mysqlc/lib/libndbclient.so
__1c2k6Fpv_v_ /mysql/mysqlc/lib/libndbclient.so
ld: fatal: Symbol referencing errors. No output written to conftest
collect2: ld returned 1 exit status

・・・(省略)


**環境変数
PATH:/usr/sfw/bin/64:/usr/local/bin:/mysql/mysqlc/bin:/mysql/mysqlc/lib:/usr/sbin:/usr/bin:/usr/lib/64:/usr/lib:/usr/ccs/bin
LDFLAGS:-L/mysql/mysqlc/lib -L/usr/local/ssl/lib -L/usr/local/lib -L/usr/sfw/lib/mysql
CPPFLAGS:-I/mysql/mysqlc/include -I/usr/local/ssl/include -I/usr/local/include -I/usr/include

エラーについても検索してみたのですが、似たような情報が少なく解決できませんでした。
何よりSolarisを触ってまだ2ヶ月もたっていないのでわからないことだらけです。

何卒よろしくお願いいたします。

A 回答 (2件)

ここだけだと C++用のライブラリがリンクできていないように見えます. 「省略」されたところに「どのようなコマンドでリンクしようとしたのか」は書いてありませんか?



C++ コンパイラを使ってリンクまですれば C++用のライブラリもリンクしますが, ld でリンクする場合には明示しない限り C++用のライブラリはリンクしません.

この回答への補足

すいません。自己解決しました。

-staticだとスタティックライブラリを参照するだけなので意味がなかったのですね。
元のエラー時に参照されていない関数を持ったライブラリをリンクしたら./configureが通りました。
C言語も初めてだったので苦労しました。

アドバイスありがとうございました。

補足日時:2013/06/24 10:08
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

*Mysql Clusterを別のディレクトリにインストールし直したので以下、質問時と違う記述があります。
 /mysql/mysqlc/⇒⇒/opt/mysql/mysql/

「省略」部分のエラーの上の数行にそれらしき記述がありました。

checking for NdbApi.hpp
configure:21877: /usr/sfw/bin/gcc -m64 -E -I/opt/mysql/mysql/include -I/opt/mysql/mysql/include/storage/ndb -I/opt/mysql/mysql/include/storage/ndb/ndbapi conftest.c
configure:21877: $? = 0
configure:21878: result: yes
configure:21893: checking for ndb_init in -lndbclient
configure:21918: /usr/sfw/bin/gcc -m64 -o conftest -g -O2 -I/opt/mysql/mysql/include -I/usr/local/ssl/include -I/usr/local/include -I/usr/include -L/opt/mysql/mysql/lib -lmysqlclient_r -lthread -lsocket -lnsl -lm -lrt conftest.c -lndbclient -lstdc++ -lresolv -lgen -lnsl -lsocket >&5

configureをいじって-staticをつけたらエラーメッセージが以下のように変わりました。


configure:21918: /usr/sfw/bin/gcc -m64 -o conftest -g -O2 -I/opt/mysql/mysql/include -I/usr/local/ssl/include -I/usr/local/include -I/usr/include -L/opt/mysql/mysql/lib -lmysqlclient_r -lthread -lsocket -lnsl -lm -lrt conftest.c -static -lndbclient -lstdc++ -lresolv -lgen -lnsl -lsocket >&5
ld: fatal: library -lthread: not found
ld: fatal: library -lsocket: not found
ld: fatal: library -lnsl: not found
ld: fatal: library -lm: not found
ld: fatal: library -lrt: not found
ld: fatal: library -lndbclient: not found
ld: fatal: library -lresolv: not found
ld: fatal: library -lgen: not found
ld: fatal: library -lnsl: not found
ld: fatal: library -lsocket: not found
ld: fatal: library -lc: not found
ld: fatal: library -lc: not found

色々と調べて試した結果、libthread.a libsocket.a libnsl.a libm.a librt.a libndbclient.a libresolv.a libc.a が見つからないという解釈なのですが合っていますでしょうか?
ちなみに解釈があっているとすると上記のスタティックライブラリ(?)はSolaris内になかったので筋が通るのですが・・・。

もしそうだった場合、上記のライブラリをどこかからインストール、または作成する必要があると思うのですが何か良い方法はないでしょうか?

お手数ですがご教授願います。

お礼日時:2013/06/20 21:44

1.Google先生に確認


  「Solaris10にOpenLDAPを導入」で検索すると、たくさん表示されます。
  (1) http://sy2920.s151.xrea.com/solaris/opnldap-inst …
  (2) http://mcaf.ee/ogl1c    ⇒URL長過ぎるので短縮
  (3) http://trialpc.net/blog/2007/04/solarisopenldap- …
  (4) http://mcaf.ee/ks7gb   ⇒URL長過ぎるので短縮
 など。

2.上記資料を参考に、チャレンジして下さい。
 前項1-(1),(2)など、参考になりませんか?
 ご自分でも、検索される事をお薦めします。

 LINUX、例えばCentOS等であれば、OpenLDAPインストール後の
 設定と運用など、参考記事がたくさん見つかると思います。
  ⇒MySQL Cluster、の記述についても気になります。
   当該サーバから、通常のDBアクセス可否を確認済みですか?
  ⇒切り分けのために、一旦BDBで構築可能か、試すのも有効です。

 OpenSource系の自力インストールが難しいようであれば、Oracle社の
 有償サポートや、SIer有償サポートなどを利用する事をご検討下さい。

以上、ご参考まで

この回答への補足

すいません。自己解決しました。

SolarisもC言語も初めてだったので苦労しましたがそれぞれに絞ってGoogle検索して解決にいたりました。

アドバイスありがとうございました。

補足日時:2013/06/24 10:11
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
URLまでのせて頂きありがとうございます。
「Solaris10 OpenLDAP」での検索はもちろん行いました。
上記のサイトもいくつか拝見したことがあるのですが
バックエンドにNDBを利用した際の設定などが細かく書いてある
サイトがほとんどなく、あっても./configureの部分でのエラーが
起きていない場合がほとんどでした。

エラーの内容について調べた結果、C++のコンパイル時にリンクが上手く通っていないため
コンパイルができていないようです。

>通常のDBアクセスを確認済みですか?
まだ確認は行っていません。
BDBでの構築も考えはしましたが、まだ実行してはいませんでした。
もう少し調べてみてそれでも解決しないようならば
通常DBアクセスもBDBでの構築もやってみようと思います。

つたない文章で申し訳ありません。
また何かありましたらよろしくお願いします。

お礼日時:2013/06/20 20:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!