松木です。
MURAKAMI Yukio <m_yukio@mac.com> wrote:
> さて、以前、Mac OS 9版Analogを利用していまして、Mac OS Xでも
> Analogを利用しようと考え、ソースをダウンロードして、makeしたの
> ですが、以下の内容のとおり、失敗しました。
:
> makeの警告文の内容:
> /usr/bin/ld: warning unused multiple definitions of symbol _warn
> utils.o definition of _warn in section (__TEXT,__text)
> /usr/lib/libSystem.dylib(err.o) unused definition of _warn
>
> おそらく、Mac OS XのライブラリとAnalogのwarn関数が多重定義とな
> って、コンパイルに失敗していると思うのですが、回避策をご存じの方は
> いらっしゃらないでしょうが?
> Analogのwarn関数を変名する手もあるのですが、よりスマートな手がな
> いかと考えまして、質問させていただきました。
手元に環境が無いので分かりかねますが、多分
$ nm /usr/lib/libSystem.dylib
とやって、warnの文字が頭にTがついて出てくると、これはlibSystem.dylib
中にerror関数が含まれていると言うことになりますから、村上さんの
言うとおりでしょう。(BSD系にnmコマンドがあるのか分かりませんが。)
もしかして、オプションに-Dが必要かもしれません。
このファイルを一時的に/usr/libからはずせばコンパイルできるかもしれま
せんが、今度は他の関数が読み込まれなくなって、コンパイルできないかも
しれませんね。
LIB=
と宣言しているにもかかわらず、/usr/lib/libSystem.dylibが読み込まれる
ということは、utils.cのヘッダーファイル(anlghea3.h)中に含まれている
標準ヘッダーファイルにerror関数の宣言が載っているということですか。