【问题标题】:gcc linker not linking programs under debian 7.4 wheezy 32-bit, gnome 3.4.2gcc 链接器未在 debian 7.4 wheezy 32 位、gnome 3.4.2 下链接程序
【发布时间】: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.oreadelf -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 文件 - 它在开始时有错误的魔法字节

标签: c linux gcc debian


【解决方案1】:

重新安装了以下软件包: cpp-4.7 (4.7.2-5) gcc-4.7 (4.7.2-5) gcc-4.7-base (4.7.2-5)

感谢@David Collins,我意识到 crtbegin.o 文件和另一个文件不太好。所以我重新安装了上面的 gcc 包。我有 gcc 基础、gcc 4.6 和 4.7,我只重新安装了解决问题的最新版本。谢谢大卫柯林斯。

【讨论】:

    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 2019-02-17
    • 2017-10-08
    • 1970-01-01
    • 2017-08-11
    • 2019-07-06
    相关资源
    最近更新 更多