• 締切済み

ツールのインストールができません

現在、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です。 よろしくお願いいたします。

みんなの回答

  • engel100
  • ベストアンサー率0% (0/0)
回答No.6

No.2 の方とほぼ同じ回答なのですが、 Makefileの以下の項目に'-liconv'を付け加えるか、   CFLAGS = -liconv   LDFLAGS = -liconv configure する前に、環境変数   CFLAGS と LDFLAGS に   '-liconv' を設定してみてはいかがでしょうか。

  • qaaq
  • ベストアンサー率36% (146/404)
回答No.5

-lgd で指定しているGDライブラリが無いんじゃないですか?

  • usleep
  • ベストアンサー率83% (5/6)
回答No.4

すみません、訂正です。 >またSolaris純正のiconv(),iconv_open(),iconv_close()はlibcに含まれます。 と書きましたが、問題となっているのは libiconv(),libiconv_close()、libiconv_open()でした。 よって「-lc をリンクオプションに追加してみるか」と言うのは間違いです。

  • usleep
  • ベストアンサー率83% (5/6)
回答No.3

libgd.soはSolaris標準のライブラリではありませんので後からユーザによって導入したモノだと思われます。 またSolaris純正のiconv(),iconv_open(),iconv_close()はlibcに含まれます。 -lc をリンクオプションに追加してみるか、 GNU版のlibiconvを/usr/local/lib あたりに放り込んで-liconvすると吉かもしれません。

  • ballville
  • ベストアンサー率47% (233/487)
回答No.2

Makefileを編集し、CFLAGSの項目に -lconv を付け加えてみてください。 1の方の指摘通り、リンカのエラーですが、足らないのは libgd.soではなく、libgd.soが呼んでいるlibiconv_openなどのシンボルです。 これらのシンボルは普通libconv.soで定義されているので、このファイルがインストールされていなければ、探してください。 でも、たぶんインストールされていると思います。

sirius2003
質問者

補足

ご回答ありがとうございました。 早速、-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ファイルはインストールされていました。 引き続き、アドバイスいただけると幸いです。よろしくお願いいたします。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

 Solarisにはあまり詳しくないのだが、ldというのはリンカなので、ライブラリが見つからないのではないだろうか。  libgd.soというファイルを探すべし。あれば、そいつを/usr/local/libにコピーするかシンボリックリンクをはれば良い。無ければどこかからか探してきてください。  今はconfigure、makeで一発インストールできるものが多いが、せめて原理は一通り押さえておきたい。 configure:簡単に言うとMakefileを作る make:Makefileを元にコンパイルやリンク、ファイルの移動・削除を行う gcc:Cコンパイラ、C言語のプログラムを中間コードに変換する ld:リンカ、各種中間コードを一つにまとめて、実行ファイルを作成する

sirius2003
質問者

補足

早速のご回答ありがとうございます。 findで調べてみたのですが、すでに、/usr/local/lib配下に、libgd.soは含まれているようです。 困りました・・・。

関連するQ&A