4

私は、solaris 10 x86 マシンで g++3.4.6 をビルドしています。このg ++​​を使用して、-m64オプションを使用して64ビットバイナリを構築しようとしました

g++ -m64 test.cpp -o test.exe

私はこれで問題に直面しませんでした。次に、gcc インストール ディレクトリ全体を別の Solaris マシン (同一のハードウェアと OS) にコピーしました (マシン 2 と呼びましょう)。しかし、64 ビット バイナリをビルドしようとすると、次のエラーが発生します。

test.cpp:1: sorry, unimplemented: 64-bit mode not compiled in

ただし、マシン 2 で使用可能な別のバージョンの g++ コンパイラ (3.4.3) を使用して 64 ビット バイナリをビルドすると、エラーは発生しませんでした。これは私を混乱させました

  1. これが g++ の最初のビルド方法に問題がある場合、なぜマシン 2 ではなくマシン 1 で動作するのでしょうか?
  2. これがマシンに問題がある場合、なぜマシン 2 で別のバージョンの g++ コンパイラが 64 ビット バイナリを作成できるのでしょうか?

g++3.4.6 を使用してマシン 2 で 64 ビット バイナリをビルドできるように、コンパイラを再度ビルドすることに関して、またはマシン構成に関して何をする必要がありますか?

4

1 に答える 1

1

次のオプションを使用するには、gcc binutilsを構成する必要があると思います。

--enable-multilib
--enable-targets=i686-pc-linux-gnu,x86_64-pc-linux-gnu

また、たとえば glibc の 32 ビット バージョンと 64 ビット バージョンの両方が必要になります (この最後のビットについてはよくわかりませんが、それが私の Linux システムのセットアップ方法であり、64 ビットと 32 ビットのコンパイルには問題ないようです。

これらの投稿も一見の価値があります (gcc ヘルプから)

さらにサポートが必要な場合は、お気軽にご連絡ください。できるように努めます。

補遺:

役立つかもしれないこれらの投稿も見つけました:ここ

于 2013-11-05T13:05:37.597 に答える