FreeBSD 5.2のCコンパイラで、stdio関連の関数がリンクできない
毎度大変お世話になっております。SPOONsoftwareの田淵と申します。
先日、うちのサーバーをFreeBSDの4.7からFreeBSDの5.2にバージョンアップ(と
言ってもクリーンインストールですが)しました。
で、以前に自社開発したシステムをコピーして、コンパイルしようとしたところ、
リンクの自点でエラーがでてしまいました。いろいろ調べている内に、libc.a内の
stdio項目だけリンクできないことが分かりました。
具体的には以下のとおりです。
テスト用に、以下の最も初歩的なプログラムを組みました。
#include <stdio.h>
main()
{
printf( "hello!" );
return 1;
}
これを、
cc -o temp temp.cpp
として、コンパイルすると、以下のメッセージがでます。
/var/tmp//ccwRLUq5.o(.eh_frame+0x11): undefined reference to
`__gxx_personality_v0'
試しに
cc -o temp temp.cpp -lc
としてコンパイルして見ても結果は変わりません。
printf以外にもscanf,sprintf,puts,fopenなどを単独でコンパイルしてみました
が、結果は変わりませんでした。
ただし、atoiやstrlenのような同じlibc.aを使う関数は何ともなくコンパイル完了
します。
FreeBSDのバグなのでしょうか?解決策等、或いは同じ経験をした方、「自分は5.2
使っているけどそんな症状はでないよ」と言う方がいらっしゃったらご助言・ご報告
いただければ幸いです。
ちなみにOSはFreeBSD5.2で、先日公式サイトからisoイメージを取得し、CD-Rに焼
いてインストールしました。
1台で上記の現象が発生したので、もう一台のPCにもインストールしてみて実行し
ましたが、結果は変わりませんでした。(この際同一のCDを使ってインストールして
います)
よろしくお願いいたします。
**************************************
*** 田淵義弘 in SPOONsoftware
*** E-Mail : tabuchi@spoonsoftware.com
*** HP : http://www.spoonsoftware.com
**************************************
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735