- 締切済み
ツールのインストールができません
現在、solaris9でWebAlizerというツールをインストールしようとしています。しかし、make時に以下のようなエラーが出てしまいます。どのように、対応したらよいでしょうか? # make gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c webalizer.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c hashtab.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c linklist.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c preserve.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c dns_resolv.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c parser.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c output.c gcc -Wall -O2 -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -I/usr/local/include -c graphs.c gcc -L/usr/local/lib -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o -lgd -lpng -lz -lm 未定義の 最初に参照している シンボル ファイル libiconv_close /usr/local/lib/libgd.so libiconv_open /usr/local/lib/libgd.so libiconv /usr/local/lib/libgd.so ld: 重大なエラー: シンボル参照エラー。webalizer に書き込まれる出力はありません。 collect2: ld returned 1 exit status make: *** [webalizer] Error 1 環境は、Solaris9、gcc3.4.2です。 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- engel100
- ベストアンサー率0% (0/0)
No.2 の方とほぼ同じ回答なのですが、 Makefileの以下の項目に'-liconv'を付け加えるか、 CFLAGS = -liconv LDFLAGS = -liconv configure する前に、環境変数 CFLAGS と LDFLAGS に '-liconv' を設定してみてはいかがでしょうか。
- qaaq
- ベストアンサー率36% (146/404)
-lgd で指定しているGDライブラリが無いんじゃないですか?
- usleep
- ベストアンサー率83% (5/6)
すみません、訂正です。 >またSolaris純正のiconv(),iconv_open(),iconv_close()はlibcに含まれます。 と書きましたが、問題となっているのは libiconv(),libiconv_close()、libiconv_open()でした。 よって「-lc をリンクオプションに追加してみるか」と言うのは間違いです。
- usleep
- ベストアンサー率83% (5/6)
libgd.soはSolaris標準のライブラリではありませんので後からユーザによって導入したモノだと思われます。 またSolaris純正のiconv(),iconv_open(),iconv_close()はlibcに含まれます。 -lc をリンクオプションに追加してみるか、 GNU版のlibiconvを/usr/local/lib あたりに放り込んで-liconvすると吉かもしれません。
- ballville
- ベストアンサー率47% (233/487)
Makefileを編集し、CFLAGSの項目に -lconv を付け加えてみてください。 1の方の指摘通り、リンカのエラーですが、足らないのは libgd.soではなく、libgd.soが呼んでいるlibiconv_openなどのシンボルです。 これらのシンボルは普通libconv.soで定義されているので、このファイルがインストールされていなければ、探してください。 でも、たぶんインストールされていると思います。
- anmochi
- ベストアンサー率65% (1332/2045)
Solarisにはあまり詳しくないのだが、ldというのはリンカなので、ライブラリが見つからないのではないだろうか。 libgd.soというファイルを探すべし。あれば、そいつを/usr/local/libにコピーするかシンボリックリンクをはれば良い。無ければどこかからか探してきてください。 今はconfigure、makeで一発インストールできるものが多いが、せめて原理は一通り押さえておきたい。 configure:簡単に言うとMakefileを作る make:Makefileを元にコンパイルやリンク、ファイルの移動・削除を行う gcc:Cコンパイラ、C言語のプログラムを中間コードに変換する ld:リンカ、各種中間コードを一つにまとめて、実行ファイルを作成する
補足
早速のご回答ありがとうございます。 findで調べてみたのですが、すでに、/usr/local/lib配下に、libgd.soは含まれているようです。 困りました・・・。
補足
ご回答ありがとうございました。 早速、-lconvを付加してmakeを行ったのですが、以下のような結果となりました。 # make gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c webalizer.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c hashtab.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c linklist.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c preserve.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c dns_resolv.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c parser.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -c output.c gcc: -lconv: linker input file unused because linking not done gcc -Wall -O2 -lconv -DETCDIR=\"/etc\" -DHAVE_MATH_H=1 -I/usr/local/include -c graphs.c gcc: -lconv: linker input file unused because linking not done gcc -L/usr/local/lib -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o -lgd -lpng -lz -lm 未定義の 最初に参照している シンボル ファイル libiconv_close /usr/local/lib/libgd.so libiconv_open /usr/local/lib/libgd.so libiconv /usr/local/lib/libgd.so ld: 重大なエラー: シンボル参照エラー。webalizer に書き込まれる出力はありません。 collect2: ld returned 1 exit status make: *** [webalizer] Error 1 なお、libiconv.soファイルはインストールされていました。 引き続き、アドバイスいただけると幸いです。よろしくお願いいたします。