Re: FreeBSD 5.2のCコンパイラで、stdio関連の関数がリンクできない
中治様。早速の回答ありがとうございました。
>
> ファイル名が .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 に変更するとうまくいくはずです。
> --
なるほど...確かに.cに変えれば動きますね...
ただ、実際に5.2に移植したいプログラムは、クラスを使った上に内部でsprintfを
使って文字列の設定をやっているプログラムなので、単純に拡張子(UNIXでこう呼ん
でいいのかな?)を変えるわけには行きません。
例えば、下のようなコードを正常に動かしたければどうすればよいでしょうか?
#include <stdio.h>
class Printer
{
public:
void out(){printf( "hello!" ); }
};
main()
{
Printer p;
p.out();
return 1;
}
FreeBSD4.7でやったときには普通にリンクまで出来ていたのですが...誠に申し
訳ありませんが、よろしくお願いいたします。
**************************************
*** 田淵義弘 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