Re: FreeBSD 5.2のCコンパイラで、stdio関連の関数がリンクできない
中治@豊橋です。
>>>>> In <btiht4$flj$1@pin3.tky.plala.or.jp>
>>>>> "Yoshihiro Tabuchi" <tabuchi@spoonsoftware.com> wrote:
> テスト用に、以下の最も初歩的なプログラムを組みました。
> これを、
> cc -o temp temp.cpp
^^^^
> として、コンパイルすると、以下のメッセージがでます。
> /var/tmp//ccwRLUq5.o(.eh_frame+0x11): undefined reference to
> `__gxx_personality_v0'
> 試しに
> cc -o temp temp.cpp -lc
^^^^
> としてコンパイルして見ても結果は変わりません。
ファイル名が .cpp で終わっているので、C++ のプログラムだとコンパイラが判断
するからです。
FreeBSD 附属の cc の実体は gcc ですが、その info によると、
Options Controlling the Kind of Output
======================================
Compilation can involve up to four stages: preprocessing, compilation
proper, assembly and linking, always in that order. The first three
stages apply to an individual source file, and end by producing an
object file; linking combines all the object files (those newly
compiled, and those specified as input) into an executable file.
For any given input file, the file name suffix determines what kind
of compilation is done:
...
`FILE.cc'
`FILE.cxx'
`FILE.cpp' ←これ
`FILE.C'
C++ source code which must be preprocessed. Note that in `.cxx',
the last two letters must both be literally `x'. Likewise, `.C'
refers to a literal capital C.
ですから、ファイル名を temp.c に変更するとうまくいくはずです。
--
NAKAJI Hiroyuki (中治 弘行)
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