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

您正在将 64 位库与 32 位库链接。这种混合会产生错误。您可以通过“objdump”命令检查 linux 中的体系结构,对于 Windows,您可以使用依赖项walker。我也面临同样的问题。如果您使用的是 linux,您应该使用 -m64 命令而不是 -m32 来修改它。-m64 命令用于构建 64 位库,-m32 命令用于构建 32 位库。

于 2013-02-15T07:17:01.573 回答
0

clang 编译器本质上是在告诉有问题的源代码正在使用 x86-64 处理器扩展(也称为 amd64 和“64 位处理器”),但您试图不{即仅使用也使用的 i386 架构(并扩展) i[456]86 }。这是 32 位处理器的默认设置。很可能,您下载了错误版本(64 位与预期的 32 位)您尝试编译的软件。

于 2012-04-16T14:00:31.270 回答