現在、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です。
よろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
No.2 の方とほぼ同じ回答なのですが、
Makefileの以下の項目に'-liconv'を付け加えるか、
CFLAGS = -liconv
LDFLAGS = -liconv
configure する前に、環境変数
CFLAGS と LDFLAGS
に
'-liconv'
を設定してみてはいかがでしょうか。
No.4
- 回答日時:
すみません、訂正です。
>またSolaris純正のiconv(),iconv_open(),iconv_close()はlibcに含まれます。
と書きましたが、問題となっているのは
libiconv(),libiconv_close()、libiconv_open()でした。
よって「-lc をリンクオプションに追加してみるか」と言うのは間違いです。
No.3
- 回答日時:
libgd.soはSolaris標準のライブラリではありませんので後からユーザによって導入したモノだと思われます。
またSolaris純正のiconv(),iconv_open(),iconv_close()はlibcに含まれます。
-lc をリンクオプションに追加してみるか、
GNU版のlibiconvを/usr/local/lib あたりに放り込んで-liconvすると吉かもしれません。
No.2
- 回答日時:
Makefileを編集し、CFLAGSの項目に
-lconv
を付け加えてみてください。
1の方の指摘通り、リンカのエラーですが、足らないのは
libgd.soではなく、libgd.soが呼んでいるlibiconv_openなどのシンボルです。
これらのシンボルは普通libconv.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ファイルはインストールされていました。
引き続き、アドバイスいただけると幸いです。よろしくお願いいたします。
No.1
- 回答日時:
Solarisにはあまり詳しくないのだが、ldというのはリンカなので、ライブラリが見つからないのではないだろうか。
libgd.soというファイルを探すべし。あれば、そいつを/usr/local/libにコピーするかシンボリックリンクをはれば良い。無ければどこかからか探してきてください。
今はconfigure、makeで一発インストールできるものが多いが、せめて原理は一通り押さえておきたい。
configure:簡単に言うとMakefileを作る
make:Makefileを元にコンパイルやリンク、ファイルの移動・削除を行う
gcc:Cコンパイラ、C言語のプログラムを中間コードに変換する
ld:リンカ、各種中間コードを一つにまとめて、実行ファイルを作成する
この回答への補足
早速のご回答ありがとうございます。
findで調べてみたのですが、すでに、/usr/local/lib配下に、libgd.soは含まれているようです。
困りました・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
*** ターゲット `all' を make ...
-
./configureの次にmakeが出来ま...
-
make でエラー
-
ソースからmakeした場合の削除方法
-
ダウンロードファイルなどは、...
-
OpensslのVer.ダウン
-
makeコマンドができない
-
pgplotがインストールできない
-
newlibのmakeについて
-
flexコマンドをインストール
-
glibcバージョンアップ
-
MYSQLのmakeができない!(Redha...
-
Solaris10でCコンパイラが見...
-
gccのインクルードパスの確認
-
Debianでのmakeコマンドインス...
-
ubuntu 初期化について
-
virtual boxにインストールした...
-
パソコンでゲームをプレイしよ...
-
Windows2000を最新マシンにイン...
-
1枚でも「1枚”組”」なのですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccのインクルードパスの確認
-
makeコマンドができない
-
Debianでのmakeコマンドインス...
-
*** ターゲット `all' を make ...
-
perlのダウングレード方法
-
make でエラー
-
macos での /usr/local/lib と...
-
./configureの次にmakeが出来ま...
-
glibcバージョンアップ
-
solarisのmakeについて
-
Solaris10でCコンパイラが見...
-
Mac OS X, X11 で、pkg-config ...
-
OpensslのVer.ダウン
-
apacheのhtdocs
-
Linuxのgccのインクルードパス?
-
ソースからmakeした場合の削除方法
-
ダウンロードファイルなどは、...
-
Mac上でPythonのtkinterを使っ...
-
configure error
-
linuxの/usr/includeについて
おすすめ情報