【发布时间】:2019-01-23 12:20:51
【问题描述】:
我的系统是 64 位的,但我使用 Gnome 3.4.2 安装了 debian 7.4 wheezy 当我运行 gcc 时,我从链接器收到以下错误
>gcc -o first first.c
/usr/bin/ld:/usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o: file format not recognized; treating as linker script
/usr/bin/ld:/usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o:1: syntax error
我尝试重新安装 gcc、glibc 和 binutils。 我的系统实际上是 64 位的,但我有 32 位的 debian 映像,这可能是问题吗?
我没有交叉编译,first.c 是一个 hello world 应用程序。
#include <stdio.h>
int main( void )
{
printf("hello world");
return 0;
}
【问题讨论】:
-
您安装的是 64 位还是 32 位 GCC?
binutils包(其中包含ld链接器程序)怎么样? -
gcc 是预先安装的,由于图像是 32 位的,所以 gcc 将是 32 位的。这是命令行 guest@debian 上的版本:~$ gcc --version gcc (Debian 4.7.2-5) 4.7.2
-
file /usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o或readelf -h /usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o报告什么? -
root@debian:/usr/lib/gcc/i486-linux-gnu/4.7# 文件 /usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o / usr/lib/gcc/i486-linux-gnu/4.7/crtbegin.o: 数据 root@debian:/usr/lib/gcc/i486-linux-gnu/4.7# readelf -h crtbegin.o readelf: 错误:不是 ELF 文件 - 它在开始时有错误的魔法字节