代码之家  ›  专栏  ›  技术社区  ›  zxcv

gcc错误:错误的elf类:elfclass64

  •  31
  • zxcv  · 技术社区  · 16 年前

    我试图用一个外部编译对象coreset.o来编译一个程序,我编写了public01.c测试文件,我的函数是computation.c,这两个函数都是编译的。然而,它未能将其联系起来。可能有什么问题?

    gcc -o public01.x public01.o computation.o coreset.o
    ld: fatal: file coreset.o: wrong ELF class: ELFCLASS64
    ld: fatal: File processing errors. No output written to public01.x
    collect2: ld returned 1 exit status
    
    5 回复  |  直到 8 年前
        1
  •  35
  •   Christian C. Salvadó    16 年前

    我认为coreset.o是为64位编译的,而您将它与32位计算相链接。

    您可以尝试使用“-m64”标志重新编译computation.c。 gcc(1)

        2
  •  7
  •   Jonathan Leffler    16 年前

    可以指定“-m32”或“-m64”以选择编译模式。

    在处理autoconf(configure)脚本时,我通常在环境中设置cc=“gcc-m64”(或cc=“gcc-m32”),以便使用正确的位进行编译。至少,通常情况下……人们会找到无数的方法让它不那么有效,但我的击球平均值很高(超过95%)。

        3
  •  4
  •   zxcv    16 年前

    结果发现我使用的编译器版本与coreset.o的编译版本不匹配。

    一个是32位,另一个是64位。我把这个留着,以防其他人遇到类似的问题。

        4
  •  4
  •   John Millikin    16 年前

    看起来对象文件是在64位工具链上编译的,而您使用的是32位工具链。是否尝试以32位模式重新编译对象文件?

        5
  •  2
  •   shybovycha    11 年前
    sudo apt-get install ia32-libs