Clang链接器和i686

时间:2012-04-16 13:51:00

标签: c ubuntu clang

当我尝试使用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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您正在将64位库与32位库链接。混合创造错误。您可以通过“objdump”命令检查linux中的体系结构,对于Windows,您可以使用依赖性walker。我也面临同样的问题。如果您使用的是linux,则应使用-m64命令而不是-m32对其进行修改。 -m64命令用于构建64位库,-m32用于构建32位库。