Ошибка gcc: неправильный класс ELF: ELFCLASS64

StackOverflow https://stackoverflow.com/questions/216000

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытался скомпилировать программу, используя внешний скомпилированный объект 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
Это было полезно?

Решение

Я думаю, что coreset.o был скомпилирован для 64-битной системы, а вы связываете его с 32-битной системой вычисления .o.

Вы можете попытаться перекомпилировать computation.c с флагом '-m64' в gcc. (1)

Другие советы

Вы можете указать '-m32' или '-m64', чтобы выбрать режим компиляции.

При работе со скриптами autoconf (configure) я обычно устанавливаю CC = " gcc -m64 " (или CC = "gcc -m32") в среде, чтобы все компилировалось с правильной битностью. По крайней мере, обычно ... люди находят бесконечные способы заставить это работать не совсем, но мой средний уровень очень высок (более 95%).

Оказывается, версия компилятора, которую я использовал, не совпадала с версией скомпилированного файла coreset.o.

Один был 32-битным, другой - 64-битным. Я оставлю это на всякий случай, если кто-то столкнется с подобной проблемой.

Похоже, что объектный файл был скомпилирован на 64-битной цепочке инструментов, а вы используете 32-битную цепочку инструментов. Вы пытались перекомпилировать объектный файл в 32-битном режиме?

sudo apt-get install ia32-libs 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top