Программа Qt не исполняется (ошибка формата Exec), несмотря на двоичную и системную архитектуру, как x86_64

#c #qt

#c #qt

Вопрос:

Я пытаюсь получить пример hello world, работающий с последней версией Qt в Ubuntu 20.04. Я компилирую с помощью автоматически сгенерированного Makefile продукта qmake . После компиляции двоичный файл не имеет достаточных разрешений. После предоставления разрешений я получаю Exec format error . Запуск file выходного исполняемого файла возвращает ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped результат. Запуск uname -mpi на моей машине выводит x86_64 x86_64 x86_64 . Мне кажется, что архитектура и двоичный файл совместимы, но по какой-то причине я получаю Exec format error . Я что-то недопонимаю или мне нужно настроить этап компиляции в Makefile , чтобы он был совместим с моим оборудованием?

Комментарии:

1. Интересно, является ли виновником одна из разделяемых библиотек, на которую ссылается ваш исполняемый файл? Возможно, вы захотите запустить ldd свой исполняемый файл в качестве аргумента и посмотреть, с какими разделяемыми библиотеками он связан, а затем посмотреть, для какой архитектуры они скомпилированы.

2. @JeremyFriesner Результат ldd hello.o таков not a dynamic executable . Не уверен, подразумевает ли это какую-то другую проблему.

3. Похоже, вы пытаетесь выполнить неправильный файл. hello.o это не исполняемый файл, это объектный файл. Исполняемый файл обычно называется, например hello , без расширения.