0

ClangコンパイラでCプログラムをコンパイルしようとすると、このメッセージが表示されます

/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/crt1.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/crti.o' is incompatible with i386 output
/usr/bin/ld: i386:x86-64 architecture of input file `/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/crtn.o' is incompatible with i386 output
clang: error: linker command failed with exit code 1 (use -v to see invocation)

この問題を解決するにはどうすればよいですか? 重要な場合:

$ uname -a
Linux asus 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 17:34:21 UTC 2012 i686 i686 i386 GNU/Linux
4

2 に答える 2

0

clangコンパイラは、問題のソースコードがx86-64プロセッサ拡張機能(amd64および「64ビットプロセッサ」とも呼ばれます)を使用していることを本質的に伝えていますが、{つまり、使用されているi386アーキテクチャのみを使用しないようにしています。 (および拡張)i[456]86によって}。これは32ビットプロセッサのデフォルトです。ほとんどの場合、コンパイルしようとしているソフトウェアの間違ったバージョン(64ビットと目的の32ビット)をダウンロードしました。

于 2012-04-16T14:00:31.270 に答える
0

64 ビット ライブラリを 32 ビット ライブラリにリンクしています。その混合がエラーを引き起こします。Linux では「objdump」コマンドでアーキテクチャを確認でき、Windows では依存関係ウォーカーを使用できます。私も同じ問題に直面しました。Linux を使用している場合は、-m32 の代わりに -m64 コマンドを使用して変更する必要があります。-m64 コマンドは 64 ビット ライブラリをビルドするためのもので、-m32 コマンドは 32 ビット ライブラリをビルドするためのものです。

于 2013-02-15T07:17:01.573 に答える