
お疲れさまです。風穴です。 今井さん、ご指摘ありがとうございます。その通り、xeon-koyamaさん宛にreplyしてしまって いました。失礼しました。(^_^;) ということで、以下、「Fri, Oct 2, 2009 at 4:46 AM」(JST)にMLに投げたものです。 参考までに。 -------------------------------------------------------------------- こんにちは、風穴です。 2009/10/1 mlus <mlus@39596.com>: (snip)
file /usr/local/apache2/bin/httpd した所、
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.4, dynamically linked (uses shared libs), not stripped
となっており、64bit になったような気がするが、以下の理由から確信が持てない。 (snip)
fileコマンドが「ELF 64-bit LSB executable」と言っているので、64bitバイナリ(x86-64用バイナリ) は生成できていると思います。 #「64bit」とおっしゃっているのが、x86-64(Intel64やAMD64)のことだという #大前提ですが。 (snip)
webでは、CC='gcc -m64' を見かけるので、-m64としたが、 -mpc64 にしなければならなかったのだろうか?
-mpc64は、浮動小数点演算のモード(演算精度)を明示的に指定するためのオプションですので、 x86-64バイナリを生成するという目的においては関係ないですね。
また、export CFLAGS="-O2 -m64" せずに コンパイルした場合は、32bitで作成されてしまうのだろうか?
一般的にはそういう理解で構わないと思います。 この質問はつまり「オプションを指定しない場合のgccのデフォルト動作は?」ということですが、 厳密に言えば、それは環境に依存するということになると思うので。 #64bit版openSUSEにおけるgccの設定やソースを調べればいいのですが、すみません、そこまでしてません。(^_^;) 一般に64bitというと、CPUの64bitモード(x86系では特にx86-64)のこととして 世間では了解されていますが、厳密に言えば、こういうbit幅の話はいろんなところで出てくる ので(-mpc64:浮動小数点演算を倍精度にするとか)、何の話かを明確にしておかないと 混乱してしまいかねません。 今回の質問のような場合は、「32bit」「64bit」というのはあくまで便宜的な表現であって、 実際には「Intel64(あるいはAMD64)という命令アーキテクチャに対応したバイナリを生成する」 ということですね。 #その意味では、こういう話をする場合は、CPUが何なのかを明記したほうが良いと思います。 -- Ko Kazaana -- To unsubscribe, e-mail: opensuse-ja+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-ja+help@opensuse.org