Содержание
- Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
- О разрядности дистрибутивов Linux и о программ
- Запуск ARM файлов в Linux
- Заключение
- execvp: Ошибка формата выполняемого файла
- 🛠️ Исправление ошибки «Exec format» при запуске скриптов командой run-parts
- Решение ошибки «Exec format» при запуске скриптов командой run-parts
- Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
- О разрядности дистрибутивов Linux и о программ
- Запуск ARM файлов в Linux
- Заключение
Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
Причинами данной ошибки могут быть:
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
О разрядности дистрибутивов Linux и о программ
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Источник
execvp: Ошибка формата выполняемого файла
3) (Запускается только до перезагрузки ПК и только через root)
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’
void Autorization::listen() *2 62000
bool Setting::connectDatabase() QThread(0x5617d599a3a0)
void SqlWorker::connectToDatabase(QString) «/root/.joxi/setting»
После каждой перезагрузки ПК, Joxi перестаёт запускаться и заново надо его переустанавливать.
Скрипт joxi.sh выдаёт ошибку «execvp: Ошибка формата выполняемого файла«.
[sudo] пароль для alexandr:
Creating directory joxi
Verifying archive integrity. 100% MD5 checksums are OK. All good.
-rwx—— 1 alexandr alexandr 351 июн 5 22:32 install.sh
-rwx—— 1 alexandr alexandr 4305176 июн 5 22:32 joxi
-rwx—— 1 alexandr alexandr 86 июн 5 22:32 joxi.desktop
-rwx—— 1 alexandr alexandr 50 июн 5 22:32 joxi.sh
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Operating System: KDE neon 5.18
KDE Plasma Version: 5.18.5
KDE Frameworks Version: 5.70.0
Qt Version: 5.14.2
Kernel Version: 5.3.0-53-generic
OS Type: 64-bit
Источник
🛠️ Исправление ошибки «Exec format» при запуске скриптов командой run-parts
Решение ошибки «Exec format» при запуске скриптов командой run-parts
Чтобы запустить все скрипты в папке «Documents», я запустил:
Я получил следующее сообщение об ошибке:
Bourne shell, или совместимый шеллl:
Bash:
Perl:
Python 2.x:
Python 3.x:
Это то, что мы называем шебанг.
Теперь вернемся к теме.
Отредактируйте ваши скрипты, используя ваш любимый редактор:
Добавьте шебанг в начале скрипта:
Теперь вы можете без проблем запускать скрипты с помощью команды run-parts, используя команду run-parts.
Вы также можете использовать утилиту ShellCheck для поиска проблем в своих скриптах оболочки.
Anything in here will be replaced on browsers that support the canvas element
Источник
Я пытаюсь запустить программу, но ошибка происходит так:
Результатом file program было:
Как я могу исправить эту ошибку?
Я использую Ubuntu 14.04.2 (amd64) с VMware. Я тоже пробовал с Ubuntu i386, но результат был таким же.
Вы пытаетесь запустить исполняемый файл, скомпилированный для архитектуры ARM на архитектуре x86-64, что очень похоже на запрос вашего процессора, который говорит только по-английски, указывать направление на китайском.
Если вам нужно запустить этот исполняемый файл, у вас есть два варианта:
Получить версию исполняемого файла x86-64 (любым способом; если вам не удается получить версию исполняемого файла x86-64, но вы можете получить его исходный код, вы можете попытаться перекомпилировать его на виртуальной машине );
Установите Ubuntu Server for ARM вместо Ubuntu 14.04.2 (amd64). Для этого требуется либо физическая машина, работающая на архитектуре ARM, либо программное обеспечение для виртуализации, которое может эмулировать ее.
Это также может произойти, если вы попытаетесь запустить исполняемый файл x86-64 на 32-разрядной платформе.
В одном конкретном случае я скачал код Visual Studio и попытался запустить его на своей установке Ubuntu, но я не понял, что я установил 32-битную Ubuntu в эту виртуальную машину. Я получил эту ошибку, но после загрузки 32-разрядной версии, он работал без проблем.
qemu затем выполнит эмуляцию syscall при запуске исполняемого файла. Это работает для большинства двоичных файлов ARM, но есть некоторые, которые могут работать неправильно.
Такая ошибка может возникнуть, если выполняются все следующие условия:
Если java в системе установлено более одного, это может произойти и не будет установлено по умолчанию. На Ubuntu14.04 LTS я мог решить ее, выполнив следующее и выбрав java нужное.
Это также может произойти, если двоичный файл использует реализацию libc, которая не является libc, например, musl. В эти дни эта конкретная проблема, скорее всего, встречается при попытке запуска двоичного файла с libc в контейнере Docker с изображением, основанным на alpine. Ничто не может быть сделано с самим двоичным файлом для поддержки обеих сред, потому что реализация libc всегда должна быть статически связана, то есть встроена непосредственно в двоичный файл, по причинам.
Источник
Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
Причинами данной ошибки могут быть:
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
О разрядности дистрибутивов Linux и о программ
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Источник
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
bash: /путь/до/файла: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла
Если у вас англоязычная локаль, то ошибка будет примерно такой:
bash: ./program: cannot execute binary file: Exec format error
В самой ошибке вместо /путь/до/файла и ./program будет указан путь до файла программы, который вы хотите запустить.
- Причинами данной ошибки могут быть:
- попытка запустить 64-битный файл на 32-битной системе
- файл скомпилирован для другой архитектуры (например, для ARM, а вы пытаетесь запустить его на ПК)
- вы пытаетесь выполнить не исполнимый файл, а ссылку
- файл размещён в совместной (shared) папке
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
file /путь/до/программы
Пример вывода:
program: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=03ada11d91d298913990bfc074ccc3a380d26b69, with debug_info, not stripped
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Ещё один пример:
program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
uname -m
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
О разрядности дистрибутивов Linux и о программ
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
- скачать файл подходящей для вас битности и архитектуры
- если вы самостоятельно компилировали файл из исходного кода, то заново скомпилируйте для процессора вашей архитектуры
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
sudo apt install binfmt-support qemu qemu-user-static
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Понравиласть статья? Жми лайк или расскажи своим друзьям!
Похожие новости:
Linux (видео уроки) Обзор Linux видео уроки 1. Введение в ОС Linux/Unix Ubuntu. Видео linux уроки 2017 года. gnu linux operating system. Linux администрирование и linux уроки, linux скачать. To linux distros for 2017 and обзор linux mint 18 1.
Linux mint 19.1 (скачать) Развиваемый сообществом дистрибутив Linux mint, основанный на Ubuntu и Debian, который ставит целью предоставить пользователю «современную, элегантную и удобную операционную систему, которая одновременно является мощной и
Стала доступна для скачивания финальная версия Linux Mint 19 сразу со всеми основными вариантами рабочих столов: Cinnamon, MATE и Xfce. Если вы только начинаете знакомиться с удивительным миром Linux, то поясню: Cinnamon – это самый передовой и
Rosa Linux — Linux из России. ROSA Fresh. Сделана для дома. Создана для вас. ROSA Fresh — это современная отечественная операционная система Linux, создаваемая сообществом и легально доступная всем желающим совершенно бесплатно и без регистрации.
Иногда программа не запускается из-за отсутствия библиотеки определённой версии, при этом в системе может присутствовать эта самая библиотека, но другой версии. Чтобы было понятно, после одного из обновлений (в Arch Linux) перестал запускаться
Новая версия Deepin 15 включает в себя новый дизайн Центра Управления и компьютера, он имеет новый размытый и прозрачный стиль, также включены новые взаимодействия для угловой навигации и оконного менеджера наряду с выбором обоев рабочего стола,
Новые возможности в Linux Mint 19.3. Linux Mint 19.3 — это долгосрочный релиз поддержки, который будет поддерживаться до 2023 года. Он поставляется с обновленным программным обеспечением и приносит уточнения и множество новых функций, чтобы сделать
Linux Mint 19 – это релиз с длительной поддержкой до 2023 года. Он поставляется с обновлённым программным обеспечением и приносит усовершенствования и множество новых функций, чтобы сделать ваш рабочий стол более удобным. На момент написания, Linux
Linux Mint 18.1 Serena Cinnamon (Подробный обзор) Подробный обзор Beta версии Linux Mint 18.1 Serena Cinnamon Linux Mint команда объявила о выпуске обновления для 18.x филиала проекта. В новой версии, Linux Mint 18.1, доступен в двух версиях
Linux mint 18.2 Основные новшества Linux Mint 18.2 (MATE, Cinnamon, KDE и Xfce): В состав включены новые версии десктоп-окружений MATE 1.18 и Cinnamon 3.4, оформление и организация работы в которых продолжает развитие идей GNOME 2 — пользователю
Какой линукс выбрать? Какой linux лучше? Сегодня мы разберемся какие дистрибутивы линукс бывают и какой из них самый лучший. Первое что нужно понять: дистрибутивов линуксов очень много, больше 100. Но, как и в любой экосистеме, тут существует
Начало работы с btrfs для Linux. Файловая система B-tree — это файловая система и менеджер томов, объединенные в одно целое. Он предлагает много перспектив для доставки расширенного набора функций файловой системы в Linux.
Команда с гордостью объявляет о выпуске Linux Mint 20” Ulyana » Cinnamon Edition. Linux Mint 20-это долгосрочный релиз поддержки, который будет поддерживаться до 2025 года. Он поставляется с обновленным программным обеспечением и приносит
Linux Mint 20.2 Ума (Uma) Скачать. Самая большая новость в этом месяце-предстоящий выпуск Linux Mint 20.2 “Uma”. Мы надеемся, что БЕТА-версия будет готова к середине июня.
Новости Linux Январь 2017. НОВОСТИ LINUX, UBUNTU 2017 ЯНВАРЬ В Telegram появилась возможность удалить отправленное сообщения В мессенджере Telegram появилась возможность удалить отправленное сообщения. И если раньше оно удалялось только с одной
Обзор Solus 3 с рабочим окружением Budgie Этот релиз включает в себя из-из-коробки поддержка, универсальных программных пакетов для Linux. Поддержка снимков снимает давление со стороны поставщиков программного обеспечения для конкретной платформы,
Все три издания Linux Mint 19 (Cinnamon, MATE, Xfce) в настоящее время доступны для публичного тестирования. Официально новую бета версию планируют представить 4 июня 2018 года. Хотя перед началом публичных тестирования уже отловлено и исправлено
Преимущества и проблемы беспилотных летательных аппаратов БПЛА или беспилотный летательный аппарат представляет собой самолет с дистанционным управлением. Он может работать удаленно в режиме реального времени или запрограммирован для автономного
Новая ICQ (Windows, Linux, Mac, Web) Что нового: Mail Group представила обновленный мессенджер ICQ. Новая версия знаменитой «аськи» стала «умной, быстрой, гибкой». Разработчики добавили несколько интересных функций, которые
RFRemix 26 основанный на Fedora 26 (Russian Fedora) Официально объявили о выходе Fedora 26. Это проект по поддержке пользователей и разработчиков открытого ПО в России. Основная цель проекта — обеспечить, чтобы Fedora полностью отвечала
I’m trying to run a program, but it gives an error:
bash: ./program: cannot execute binary file: Exec format error
The result of file program
was:
program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked (uses share libs), for GNU/LINUX 2.6.16, not stripped
How can I fix this?
I’m using Ubuntu 14.04.2 (amd64) with VMware. I also tried using Ubuntu i386, but the result was the same.
asked Jul 15, 2015 at 5:30
Soongeun HwangSoongeun Hwang
1,5012 gold badges9 silver badges4 bronze badges
1
You’re trying to run an executable compiled for an ARM architecture on an x86-64 architecture, which is much like asking your processor who only speaks English to take directions in Chinese.
If you need to run that executable you have two choices:
-
Get an x86-64 version of the executable (by any mean; if you’re unable to get an x86-64 version of the executable but you’re able to get its source code, you can try to recompile it on the virtual machine);
-
Install Ubuntu Server for ARM in place of Ubuntu 14.04.2 (amd64). This requires either a physical machine running on an ARM architecture or a virtualization software that can emulate it.
answered Jul 15, 2015 at 5:39
1
This can also occur if you attempt to run an x86-64 executable on a 32-bit platform.
In one specific instance, I downloaded Visual Studio Code and tried to run it on my Ubuntu installation, but I hadn’t realized that I had installed 32-bit Ubuntu in this VM. I got this error, but after downloading the 32-bit version, it ran without issue.
answered Sep 10, 2015 at 23:44
It is often possible to run an ARM executable image on an amd64 system if you install the binfmt-support
, qemu
, and qemu-user-static
packages:
sudo apt install binfmt-support qemu qemu-user-static
qemu
will then perform syscall emulation when you run the executable. This works for most ARM binaries but there are a few that may not run correctly.
answered Oct 27, 2016 at 6:41
Nathan OsmanNathan Osman
31.7k40 gold badges176 silver badges259 bronze badges
2
Such error may occur if all of the following are true:
- Executable is not a file but a link
- You run run it inside VM
- File is located in shared folder
- Your host is Windows.
If you got that file, let’s say, in archive — try to unpack it inside VM, in some directory inside virtual drive, not folder mapped to your host machine hard drive, for example /myNewDir/
wjandrea
13.8k4 gold badges46 silver badges94 bronze badges
answered Nov 13, 2015 at 22:22
PavelPavel
3531 gold badge3 silver badges10 bronze badges
1
If more than one java
is installed on the system this might happen and not set as default. On Ubuntu14.04 LTS I could get it resolved by executing following and choosing the java
I needed.
sudo update-alternatives --config java
[sudo] password for user:
update-alternatives: warning: /etc/alternatives/java has been changed (manually or by a script); switching to manual updates only
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode
1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode
2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 manual mode
Press enter to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in manual mode
I choose 2 and set openjdk-8
as a default. Which did not show the Exec format error
.
Videonauth
32.6k16 gold badges102 silver badges119 bronze badges
answered Jun 6, 2016 at 13:43
You must compile your file using an appropriate CPU architecture (x86 for example) and copy the .exe file on your linux machine. Then you can install mono on your linux machine and issue the following command:
mono myprogram.exe
muru
188k50 gold badges459 silver badges709 bronze badges
answered Feb 28, 2016 at 19:49
1
This can also happen if the binary uses a libc implementation which is not libc, such as musl. These days this specific problem is most likely encountered when trying to run a binary with libc in a Docker container with an image based on alpine. There is nothing that can be done to the binary itself to support both environments, because the libc implementation must always be linked statically, i.e. built directly into the binary, for reasons.
answered Jul 16, 2019 at 16:44
I got this error trying to run a zip file containing an executable rather than extracting it and running the executable itself xD
In addition to the other answers offered here, I suppose there would be a lot of file types that aren’t intended to be executable which could cause this error.
answered May 19, 2020 at 6:05
1
This is another special case: WSL (Windows Subsystem for Linux) by default(!) only supports 64bit executables. I think this is a rather unusual behaviour, as normally there is a backwards compatibility.
(Even more special is that selecting 64bit in a formerly 32bit project of Windev won’t fix your issue. You need to start a new project, selecting 64bit right in the beginning. Tested on Windev 26. This IDE sucks, forced to use it because of working legacy code.)
answered Jul 21, 2022 at 23:23
PythoNicPythoNic
6761 gold badge5 silver badges15 bronze badges
2
I’m developing a C++ application in Visual Studio, compiled with WSL with G++ on an x64 system
Sorry if this is obvious, but I’m new to developing apps for Linux
/proc/cpuinfo flags:
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat pku ospke md_clea
This is what I get when I run the executable with «./program.out»:
bash: ./program.out: cannot execute binary file: Exec format error
And with «sudo ./program.out»:
./program.out: 1: ./program.out: 1: not found
./program.out: 1: ./program.out: ELF: not found
./program.out: 1: ./program.out: A��878G8G����DD: not found
./program.out: 1: ./program.out: A: not found
./program.out: 1: ./program.out: 1: not found
: No such filents.out: 1: ./BeXCoolAccounts.out: cannot open
./program.out: 2: ./program.out: @!l: not found
: No such filents.out: 1: ./BeXCoolAccounts.out: cannot open �GJ�V�JA
./program.out: 1: ./program.out: %@@@����nnppp-[-[����X�XA1A: not found
./program.out: 2: ./program.out: Syntax error: end of file unexpected
And «file ./program.out»:
./program.out: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), no program header, missing section headers
When I was looking for a solution I tried «ldd ./program.out»:
not a dynamic executable
And «strace ./program.out»:
execve("./program.out", ["./program.out"], 0x7ffcc5b8b100 /* 27 vars */) = -1 ENOEXEC (Exec format error)
strace: exec: Exec format error
+++ exited with 1 +++
I’ve also used chmod a+x on the executable, but still nothing
I’m developing a C++ application in Visual Studio, compiled with WSL with G++ on an x64 system
Sorry if this is obvious, but I’m new to developing apps for Linux
/proc/cpuinfo flags:
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm avx512f avx512dq rdseed adx smap clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat pku ospke md_clea
This is what I get when I run the executable with «./program.out»:
bash: ./program.out: cannot execute binary file: Exec format error
And with «sudo ./program.out»:
./program.out: 1: ./program.out: 1: not found
./program.out: 1: ./program.out: ELF: not found
./program.out: 1: ./program.out: A��878G8G����DD: not found
./program.out: 1: ./program.out: A: not found
./program.out: 1: ./program.out: 1: not found
: No such filents.out: 1: ./BeXCoolAccounts.out: cannot open
./program.out: 2: ./program.out: @!l: not found
: No such filents.out: 1: ./BeXCoolAccounts.out: cannot open �GJ�V�JA
./program.out: 1: ./program.out: %@@@����nnppp-[-[����X�XA1A: not found
./program.out: 2: ./program.out: Syntax error: end of file unexpected
And «file ./program.out»:
./program.out: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), no program header, missing section headers
When I was looking for a solution I tried «ldd ./program.out»:
not a dynamic executable
And «strace ./program.out»:
execve("./program.out", ["./program.out"], 0x7ffcc5b8b100 /* 27 vars */) = -1 ENOEXEC (Exec format error)
strace: exec: Exec format error
+++ exited with 1 +++
I’ve also used chmod a+x on the executable, but still nothing
Photo by Jivacore/Shutterstock.com
Linux has been reworked heavily since it first came out to the point that it’s no longer an OS for terminal kings. Just about everyone can use it now thanks to the much better user interfaces that we see in modern Linux distros. However, that doesn’t mean it can’t be frustrating at times.
In this article, we’re taking a look at the “cannot execute binary file: exec format error” issue and giving you a few solutions on how to get rid of the problem.
Also read: How to make a file executable in Linux?
Check the architecture
The first thing you should do is ensure you’ve got the right bin file. Binary files made for 32-bit systems won’t work on 64-bit systems and vice-versa. You can check the architecture of any file by using the command below.
file filename
If the architecture doesn’t match between your file and the PC you’re running it on, try running the corresponding binary file for the matching architecture.
Check the file
Binary files can be run on Windows, Linux and macOS. However, binaries made for one OS won’t run on the others. Generally, these files have different file formats to help users distinguish between them. If you’re trying to run a binary file made for Windows on a Linux distro, it’s obviously not going to work.
If you must run the binary on Linux however, we recommend downloading Wine and using it to run the file. Wine is a compatibility layer capable of running Windows applications on POSIX-compliant operating systems, including Linux and macOS.
Install GCC and Gfortran
GCC and Gfortran are required for several binary files to compile and execute properly. You can install them by typing the command below in your terminal.
sudo apt-get install gfortran && sudo apt-get install build-essential
Now try running your binary file again and it should run without a problem — fixing the ‘cannot execute binary file’ error.
Uncompress the file
Sometimes binary files are compressed to make them easier to share over the internet. Try uncompressing the file to see if that helps you run it fine. Run the following commands on at a time.
xz -d ./filename
chmod +x ./filename
./filename
Check file permissions
Another potential reason for your binary file not running could be that the user doesn’t have permission to change or read the file. You can fix this by typing the following command in the terminal.
chmod +x filename
Once the permissions are set, you can run the file by typing this.
./filename
Use Dos2unix
The Dos2unix command can sometimes help binaries made for DOS to run on UNIX systems. Try using the following command to see if your file runs or not.
dos2unix filename.bin
If we’ve missed out on any fixes that helped you solve the ‘cannot execute binary file’ error, please comment down below with the fix.
Also read: What does ./ mean in Linux?
Someone who writes/edits/shoots/hosts all things tech and when he’s not, streams himself racing virtual cars.
You can contact him here: [email protected]
ОБЗОР
#include <unistd.h>
int execve(const char *filename, char *const argv[],
char *const envp[]);
ОПИСАНИЕ
execve() выполняет программу, задаваемую аргументом filename. В
filename должно быть указано имя двоичного исполняемого файла или
сценарий, начинающийся со строки вида:
#! интерпретатор [необязательные параметры]
Подробней о сценариях написано далее в «Интерпретируемые сценарии».
argv — это массив строковых параметров, передаваемых новой программе. По
соглашению, в первой строке должно содержаться имя файла, относящееся к
запускаемой программе. envp — это массив строк в формате
ключ=значение, которые передаются новой программе в качестве окружения
(environment). Оба массива argv и envp завершаются указателем null. К
массиву параметров и окружению можно обратиться из вызываемой программой
функции main, если она определена как:
int main(int argc, char *argv[], char *envp[])
При успешном выполнении execve() управление не возвращается, а код,
данные, bss и стек вызвавшего процесса перезаписываются загруженной
программой.
Если текущая программа выполнялась под управлением ptrace, то после
успешного вызова execve() ей посылается сигнал SIGTRAP.
Если у файла программы, указанного в filename, установлен бит set-user-ID
и файловая система, в которой он хранится, не смонтирована с параметром
nosuid (флаг MS_NOSUID у mount(2)), и вызывающий процесс не
выполняется под управлением ptrace, то фактический идентификатор
пользователя вызывающего процесса меняется на идентификатор владельца файла
программы. Точно также, если на файле программы установлен бит set-group-ID,
то фактический идентификатор группы вызывающего процесса становится равным
группе, которой принадлежит файл программы.
Фактический идентификатор пользователя процесса копируется в сохранённый
идентификатор пользователя (set-user-ID), также фактический идентификатор
группы копируется в сохранённый идентификатор группы (set-group-ID). Это
копирование выполняется после изменения любого фактического идентификатора,
которое происходит из-за выставленных бит режима set-user-ID и set-group-ID.
Если исполняемый файл является динамически-скомпонованным файлом в формате
a.out, содержащим заглушки для динамических библиотек, то в начале
выполнения этого файла вызывается динамический компоновщик Linux
ld.so(8), который начинает выполнение с загрузки общих объектов в память
и компонует их с исполняемым файлом.
Если исполняемый файл является динамически компонуемым файлом в формате ELF,
то для загрузки необходимых общих объектов используется интерпретатор,
указанный в сегменте PT_INTERP. Для программ, скомпонованных с glibc, обычно
это /lib/ld-linux.so.2.
При вызове execve() сохраняются все свойства процесса, за исключением:
- *
- Значения обработчиков всех захватываемых сигналов сбрасываются в значения по
умолчанию (signal(7)). - *
- Любой альтернативный стек сигнала не сохраняется (sigaltstack(2)).
- *
- Проецирование памяти не сохраняется (mmap(2)).
- *
- Подключённые общие сегменты памяти System V отключаются (shmat(2)).
- *
- Области общей памяти POSIX становятся неспроецированными (shm_open(3)).
- *
- Открытые дескрипторы в очереди сообщений POSIX закрываются
(mq_overview(7)). - *
- Все открытые именные семафоры POSIX закрываются (sem_overview(7)).
- *
- Таймеры POSIX не сохраняются (timer_create(2)).
- *
- Все открытые потоки каталогов (directory streams) закрываются
(opendir(3)). - *
- Блокировки памяти не сохраняются (mlock(2), mlockall(2)).
- *
- Обработчики завершения работы (exit handlers) не сохраняются (atexit(3),
on_exit(3)). - *
- Окружения плавающей точки сбрасываются в настройки по умолчанию
(fenv(3)).
В POSIX.1 определён список сохраняемых свойств процесса. Следующие свойства
процесса, имеющиеся только в Linux, также не сохраняются при execve():
- *
- Устанавливается флаг PR_SET_DUMPABLE (prctl(2)), если выполняемая
программа не имеет установленных бит set-user-ID или set-group-ID; в
противном случае он очищается. - *
- Флаг PR_SET_KEEPCAPS (prctl(2)) очищается.
- *
- (Начиная с Linux 2.4.36 / 2.6.23) Если выполняется программа с установленным
битом set-user-ID или set-group-ID, то сигнал о смерти родителя,
установленный prctl(2) с флагом PR_SET_PDEATHSIG, очищается. - *
- Имя процесса, установленное через prctl(2) PR_SET_NAME (и отображаемое
ps -o comm), изменяется на имя нового исполняемого файла. - *
- Флаг SECBIT_KEEP_CAPS securebits очищается. Смотрите
capabilities(7). - *
- Сигнал завершения (termination signal) устанавливается в SIGCHLD
(clone(2)). - *
- Таблица файловых дескрипторов не является общей, отменяется действие флага
CLONE_FILES у clone(2).
Также стоит учитывать следующее:
- *
- Все нити (threads), отличные от вызывающей, уничтожаются
execve(). Мьютексы, условные переменные и другие объекты pthreads не
сохраняются. - *
- При запуске программы выполняется эквивалент setlocale(LC_ALL, «C»).
- *
- В POSIX.1 указано, что действия по отношению к любым игнорируемым или
имеющим настройку по умолчанию сигналам, остаются неизменными. В POSIX.1
есть одно исключение: если SIGCHLD игнорируется, то реализация может
оставить обработку сигнала (disposition) неизменной или вернуть настройку по
умолчанию; в Linux используется первое. - *
- Все ожидающие выполнения асинхронные операции ввода-вывод отменяются
(aio_read(3), aio_write(3)). - *
- Как происходит обработка мандатов (capabilities) при вызове execve(),
см. capabilities(7). - *
- По умолчанию, после execve() файловые дескрипторы остаются
открытыми. Файловые дескрипторы, помеченные как close-on-exec (закрывать при
запуске), закрываются; смотрите описание FD_CLOEXEC в fcntl(2) (если
файловый дескриптор закрыт, это приводит к освобождению всех имеющихся
блокировок, полученных на соответствующий файл данным процессом. Подробней
смотрите fcntl(2)). В POSIX.1 сказано, что если бы файловые дескрипторы
0, 1 и 2 были закрыты после успешного вызова execve(), и процесс получил
бы привилегии из-за установленных битов режима set-user_ID или set-group_ID
на исполняемом файле, то система смогла бы открыть произвольный файл для
каждого из этих дескрипторов. Считается, что переносимая программа, с
привилегиями или без, не может рассчитывать, что эти три файловых
дескриптора будут оставаться закрытыми после execve().
Интерпретируемые сценарии
Интерпретируемый сценарий — это текстовый файл, у которого установлен бит
выполнения и первая строка имеет вид:
#! интерпретатор [необязательные параметры]
В поле интерпретатор должно быть указано имя файла запуска, это не имя
самого файла сценария. Если в аргументе filename для execve() указан
интерпретируемый сценарий, то интерпретатор будет вызван со следующими
параметрами:
интерпретатор [необязательный параметр] имя файла параметр...
где параметр… — последовательность слов, указываемых аргументом argv
в execve() начиная с argv[1].
В целях переносимости, необязательный параметр должен быть или пустым,
или задаваться одним словом (т.е., не должен содержать пробельных символов);
см. ЗАМЕЧАНИЯ далее.
Ограничения на размер параметров и окружения
Большинство реализаций UNIX накладывает некоторые ограничения на полный
размер параметра командной строки (argv) и окружения (envp), которые
можно передать новой программе. POSIX.1 позволяет реализации объявить это
ограничение через константу ARG_MAX (определённую в <limits.h>
или сделать её доступной во время выполнения через вызов
sysconf(_SC_ARG_MAX)).
В ядре Linux до версии 2.6.23 размер памяти, используемый для хранения
окружения и строк параметров, был ограничен 32 страницами (определялся
ядерной константой MAX_ARG_PAGES). На архитектурах с 4-КиБ размером
страницы это давало максимальный размер в 128 КиБ.
Начиная с ядра версии 2.6.23, большинство архитектур поддерживают предельный
размер, высчитываемый от мягкого ограничения ресурса RLIMIT_STACK
(см. getrlimit(2)), который действует во время вызова
execve(). (Исключение составляют архитектуры без механизма управления
памятью: в них ограничение рассчитывается как и до версии 2.6.23.) Это
изменение позволяет программам иметь больший список параметров и/или
окружения. Для этих архитектур полный размер ограничен до 1/4 разрешённого
размера стека. (Накладываемое ограничение в 1/4 позволяет новой программе
всегда иметь некоторое пространство под стек.) Начиная с Linux версии
2.6.25, ядро отводит нижние 32 страницы для этого предельного размера,
поэтому, даже когда RLIMIT_STACK задан слишком низко, приложения
гарантированно получат, по крайней мере, столько же пространства под
параметры и окружение, сколько бы они получили при работе с Linux 2.6.23 и
ранее. (Это гарантия не обеспечивалась в Linux 2.6.23 и 2.6.24.) Также,
размер строки ограничен 32 страницами (ядерная константа MAX_ARG_STRLEN),
а максимальное число строк может быть 0x7FFFFFFF.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении execve() не возвращает управление. В случае
ошибки возвращается -1, а errno устанавливается в соответствующее
значение.
ОШИБКИ
- E2BIG
- Слишком большое общее количество байт для окружения (envp) и списка
параметров (argv). - EACCES
- В одном из каталогов префикса filename или интерпретатора не разрешён
поиск. (см. также path_resolution(7)) - EACCES
- Файл или интерпретатор не являются обычным файлом.
- EACCES
- Не установлен бит выполнения на файле или сценарии или интерпретаторе ELF.
- EACCES
- Файловая система смонтирована с noexec.
- EAGAIN (начиная с Linux 3.1)
- Из-за изменения реального UID одним из вызовов set*uid() ранее,
вызывающий всё ещё превышает ограничитель ресурса RLIMIT_NPROC (смотрите
setrlimit(2)). Подробное объяснение этой ошибки смотрите в ЗАМЕЧАНИЯХ. - EFAULT
- Значение filename или один из указателей в векторах argv или envp
указывает за пределы доступного адресного пространства. - EINVAL
- Исполняемый ELF-файл содержит более одного сегмента PT_INTERP (т.е., в нём
указано более одного интерпретатора). - EIO
- Произошла ошибка ввода-вывода.
- EISDIR
- Интерпретатор ELF является каталогом.
- ELIBBAD
- Не распознан формат интерпретатора ELF.
- ELOOP
- Во время определения filename, имени сценария или интерпретатора ELF
встретилось слишком много символьных ссылок. - EMFILE
- Было достигнуто ограничение по количеству открытых файловых дескрипторов на
процесс. - ENAMETOOLONG
- Слишком длинное значение аргумента filename.
- ENFILE
- Достигнуто максимальное количество открытых файлов в системе.
- ENOENT
- Файл filename, сценарий или интерпретатор ELF не существует, или не
найдена динамическая библиотека, необходимая для файлового интерпретатора. - ENOEXEC
- Не распознан формат исполняемого файла, он не подходит для архитектуры, или
имеет ошибки в формате, из-за чего не может быть выполнен. - ENOMEM
- Недостаточное количество памяти ядра.
- ENOTDIR
- Компонент пути в filename, сценарии или интерпретаторе ELF в
действительности не является каталогом. - EPERM
- Файловая система смонтирована с nosuid, пользователь не является
суперпользователем, а на файле установлен бит set-user-ID или set-group-ID. - EPERM
- Над процессом выполняется трассировка, пользователь не имеет прав
суперпользователя, а у файла установлен бит set-user-ID или set-group-ID. - ETXTBSY
- Заданный исполняемый файл был открыт на запись одним или более процессов.
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, SVr4, 4.3BSD. В POSIX не описано поведение #!,
но это существует (в нескольких вариантах) в других системах UNIX.
ЗАМЕЧАНИЯ
Над процессами с установленными set-user-ID и set-group-ID не может
выполняться ptrace(2).
Результат работы при монтировании файловой системы с параметром nosuid
различается в разных версиях ядра Linux: некоторые будут отказывать в
запуске исполняемых файлов с установленными битами set-user-ID и
set-group-ID, если это дало бы пользователю больше прав чем уже есть (и
возвращать EPERM), другие просто проигнорируют биты set-user-ID и
set-group-ID и успешно выполнят exec().
В Linux значения argv и envp могут быть равны NULL. В обоих случаях,
это работает также, как если аргумент бы содержал указатель на список с
единственным указателем null. Не пользуйтесь преимуществом данной
нестандартной и непереносимой возможностью! В многих других системах UNIX
указание argv равным NULL приводит к ошибке (EFAULT). Некоторые
другие системы UNIX при envp==NULL работают также как Linux.
В POSIX.1 указано, что значения, возвращаемые sysconf(3), должны быть
неизменны в течении существования процесса. Однако, начиная с версии Linux
2.6.23, если изменяется ограничение ресурса RLIMIT_STACK, то значение,
возвращаемое для _SC_ARG_MAX, также будет изменено, чтобы отразить, что
ограничение на пространство для хранения параметров командной строки и
окружения было изменено.
В большинстве случаев отказа execve() управление возвращается в
первоначально исполняемый образ и вызывающий execve() может обработать
ошибку. Однако в (редких) случаях (обычно вызванных отсутствием ресурсов),
ошибка может возникнуть после точки невозврата: первоначально исполняемый
образ уже разрушен, а новый образ ещё сознан не полностью. В таких случаях
ядро убивает процесс сигналом SIGKILL.
Интерпретируемые сценарии
Максимальная длина первой строки с указанным интерпретатором сценариев — 127
символов.
Семантика необязательного параметра интерпретатора сценариев различна в
разных реализациях. В Linux, вся строка после имени интерпретатора
передаётся интерпретатору как единый параметр, и эта строка может содержать
пробельные символы. Однако, такое поведение отличается от других
систем. Некоторые системы используют первый пробел в качестве признака
окончания необязательного параметра. В других системах, интерпретатор
сценариев может иметь несколько параметров, и пробелы в необязательном
параметре используются для их разграничения.
В Linux игнорируются биты set-user-ID и set-group-ID на файлах со
сценариями.
execve() и EAGAIN
Это более подробное объяснение ошибки EAGAIN, которая возвращается
(начиная с Linux 3.1) при вызове execve().
Ошибка EAGAIN может возникать, когда предшествующий вызов
setuid(2), setreuid(2) или setresuid(2) приводит к изменению у
процесса реального идентификатора пользователя и это изменение приводит к
тому, что процесс превышает свой ограничитель ресурса RLIMIT_NPROC
(т. е., количество процессов, принадлежащих новому реальному UID, превышает
ограничитель ресурса). В версиях Linux с 2.6.0 по 3.0, это приводит к ошибке
вызова set*uid() (до версии 2.6 ограничитель ресурса не учитывался для
процессов, которые изменили идентификатор пользователя).
Начиная с Linux 3.1, описанный сценарий больше не приводит к ошибке в вызове
set*uid(), так как это слишком часто приводило к дырам в безопасности,
когда некорректное приложение не проверяет возвращаемое состояние и
предполагает, что если вызывающий имеет права root, то вызов всегда
выполняется успешно. Вместо этого вызов set*uid() теперь успешно изменяет
реальный UID, но ядро устанавливает внутренний флаг с именем
PF_NPROC_EXCEEDED, который означает, что был превышен ограничитель
ресурса RLIMIT_NPROC. Если флаг PF_NPROC_EXCEEDED установлен и
ограничитель ресурса всё ещё превышен на момент последующего вызова
execve(), то вызов завершается с ошибкой EAGAIN. Такая логика ядра
гарантирует, что ограничитель ресурса RLIMIT_NPROC будет учтён при
обычной последовательности действий для привилегированных служб, а именно —
fork(2) + set*uid() + execve().
Если ограничитель ресурса был не превышен на момент вызова execve() (так
как другие процессы, принадлежащие этому реальному UID завершили работу
между вызовом set*uid() и execve()), то вызов execve() выполнится
успешно и ядро очистит флаг PF_NPROC_EXCEEDED у процесса. Флаг также
очищается, если при успешном выполнении процессом последующего вызова
fork(2).
Историческая справка
В UNIX V6 список аргументов вызова exec() заканчивался 0, а список
аргументов main заканчивался -1. Поэтому, этот список аргументов не мог
быть использован напрямую в последующем вызове exec(). Начиная с UNIX V7
оба списка стали оканчиваться NULL.
ПРИМЕР
Данная программа запускается второй программой, представленной ниже. Она
просто выводит свои параметры командной строки по одному на строку.
/* myecho.c */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int j; for (j = 0; j < argc; j++) printf("argv[%d]: %sn", j, argv[j]); exit(EXIT_SUCCESS); }
Эта программа может использоваться для запуска программы, чьё имя указано в
параметре командной строки.
/* execve.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { char *newargv[] = { NULL, "hello", "world", NULL }; char *newenviron[] = { NULL }; if (argc != 2) { fprintf(stderr, "Использование: %s <file-to-exec>n", argv[0]); exit(EXIT_FAILURE); } newargv[0] = argv[1]; execve(argv[1], newargv, newenviron); perror("execve"); /* execve() возвращается только при ошибке */ exit(EXIT_FAILURE); }
Мы можем использовать вторую программу для запуска первой:
$ cc myecho.c -o myecho $ cc execve.c -o execve $ ./execve ./myecho argv[0]: ./myecho argv[1]: hello argv[2]: world
Также мы можем использовать эти программы для демонстрации использования
интерпретатора сценариев. Для этого создадим сценарий, чей «интерпретатор»
указывает на нашу программу myecho:
$ cat > script #!./myecho script-arg ^D $ chmod +x script
Теперь мы можем использовать нашу программу для запуска сценария:
$ ./execve ./script argv[0]: ./myecho argv[1]: script-arg argv[2]: ./script argv[3]: hello argv[4]: world
———-
1) sudo chmod +x ./joxi.run
2) ./joxi.run
3) (Запускается только до перезагрузки ПК и только через root)
root@alexandr-kdeneon:~/joxi# ./joxi.sh
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’
Autorization::Autorization(QObject*) QThread(0x5617d599a3a0)
void Autorization::listen() *2 62000
settings
bool Setting::connectDatabase() QThread(0x5617d599a3a0)
connectToDatabase /root/.joxi/setting
void SqlWorker::connectToDatabase(QString) «/root/.joxi/setting»
db.open()
———-
После каждой перезагрузки ПК, Joxi перестаёт запускаться и заново надо его переустанавливать.
Скрипт joxi.sh выдаёт ошибку «execvp: Ошибка формата выполняемого файла«.
—————
alexandr@alexandr-kdeneon:~/Загрузки$ sudo chmod +x ./joxi.run
[sudo] пароль для alexandr:
alexandr@alexandr-kdeneon:~/Загрузки$ sudo su
root@alexandr-kdeneon:/home/alexandr/Загрузки# ./joxi.run
Creating directory joxi
Verifying archive integrity… 100% MD5 checksums are OK. All good.
Uncompressing Joxi — best screenshot capture 100%
—————
alexandr@alexandr-kdeneon:~/joxi$ ls -l
итого 88328
-rwx—— 1 alexandr alexandr 351 июн 5 22:32 install.sh
-rwx—— 1 alexandr alexandr 4305176 июн 5 22:32 joxi
-rwx—— 1 alexandr alexandr 86 июн 5 22:32 joxi.desktop
-rwx—— 1 alexandr alexandr 50 июн 5 22:32 joxi.sh
—————
alexandr@alexandr-kdeneon:~/joxi$ ./joxi
qt.qpa.plugin: Could not load the Qt platform plugin «xcb» in «» even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Аварийный останов
alexandr@alexandr-kdeneon:~/joxi$ sudo ./joxi
[sudo] пароль для alexandr:
qt.qpa.plugin: Could not load the Qt platform plugin «xcb» in «» even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Аварийный останов
—————
Operating System: KDE neon 5.18
KDE Plasma Version: 5.18.5
KDE Frameworks Version: 5.70.0
Qt Version: 5.14.2
Kernel Version: 5.3.0-53-generic
OS Type: 64-bit
На чтение 2 мин Опубликовано 06.04.2020
крипты работали очень хорошо, когда я выполнял их напрямую, например «./script.sh» и «sh script.sh».
Но они не работали, когда я запускал их командой run-parts.
Для тех, кто интересуется, команда run-parts запускает все скрипты в каталоге.
Если вы получили такую ошибку при запуске скрипта, этот быстрый совет поможет вам исправить ошибку «Exec format error» при запуске скриптов с командой run-parts на Linux.
Решение ошибки «Exec format» при запуске скриптов командой run-parts
Чтобы запустить все скрипты в папке «Documents», я запустил:
$ run-parts --regex '^s.*.sh$' Documents
Я получил следующее сообщение об ошибке:
run-parts: failed to exec Documents/script1.sh: Exec format error run-parts: Documents/script1.sh exited with return code 1 run-parts: failed to exec Documents/script2.sh: Exec format error run-parts: Documents/script2.sh exited with return code 1 run-parts: failed to exec Documents/script3.sh: Exec format error run-parts: Documents/script3.sh exited with return code 1 run-parts: failed to exec Documents/script4.sh: Exec format error run-parts: Documents/script4.sh exited with return code 1
Чтобы исправить «ошибку формата Exec», вам нужно добавить шебанг в начале ваших скриптов, чтобы ядро знало, как их запускать.
Для тех, кому интересно, шебанг – это последовательность символов, состоящая из знака числа символов и восклицательного знака (#!) в начале скрипта.
Когда вы добавляете shebang в начале текстового файла, он интерпретируется как исполняемый файл.
Большинство скриптов начинается с шебанга.
Вот несколько типичных примеров Шебанга:
Bourne shell, или совместимый шеллl:
#!/bin/sh
Bash:
Perl:
Python 2.x:
Python 3.x:
#!/usr/bin/python3
Это то, что мы называем шебанг.
Теперь вернемся к теме.
Отредактируйте ваши скрипты, используя ваш любимый редактор:
$ nano Documents/itsecforu.sh
Добавьте шебанг в начале скрипта:
#!/bin/sh
Теперь вы можете без проблем запускать скрипты с помощью команды run-parts, используя команду run-parts.
Вы также можете использовать утилиту ShellCheck для поиска проблем в своих скриптах оболочки.
Пожалуйста, не спамьте и никого не оскорбляйте.
Это поле для комментариев, а не спамбокс.
Рекламные ссылки не индексируются!
Перейти к содержимому
Ситуация
При запуске программы через меню приложений возникает эта ошибка, программа не запускается.
Я встречал это на Oracle SQLDeveloper любой версии 20+, который устанавливался из официального rpm в среде Ubuntu + KDE с помощью sudo alien -dic
. Ошибки не было в MATE. Может не встречаться в GNOME. Встретил только в KDE.
Ошибки нет, если запустить программу напрямую из терминала.
Ошибки нет, если запустить desktop-файл через gio launch
.
Выдача прав a+x на desktop-файлы не помогает.
Запуск через kioclient5 exec
прерывается ошибкой:
Неизвестная ошибка 100
execvp: Ошибка формата выполняемого файла
Отправьте сообщение об ошибке на https://bugs.kde.org
Проблема
Команда в desktop-файле:
[Desktop Entry]
...
Exec=sqldeveloper
...
Проверяем в терминале:
$ which sqldeveloper
/usr/local/bin/sqldeveloper
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: ASCII text
$ head -2 "$(which sqldeveloper)"
/opt/sqldeveloper/sqldeveloper.sh
$ cat /opt/sqldeveloper/sqldeveloper.sh
#!/bin/bash
cd "`dirname $0`"/sqldeveloper/bin && bash sqldeveloper $*
Вывод простой: штатный desktop-файл ссылается на шелл-скрипт без шибенга, который запускает шелл-скрипт с шибенгом. Проблема именно в первом.
Решение
- Изменить параметр
Exec
в desktop-файле на корректный скрипт или бинарник. - Добавить шибенг в первый шелл-скрипт, тогда результат должен быть таким:
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: Bourne-Again shell script, ASCII text executable
Предполагаю, что аналогичное решение подойдёт для другого ПО. По крайней мере, стоит попробовать.
Перейти к содержимому
Ситуация
При запуске программы через меню приложений возникает эта ошибка, программа не запускается.
Я встречал это на Oracle SQLDeveloper любой версии 20+, который устанавливался из официального rpm в среде Ubuntu + KDE с помощью sudo alien -dic
. Ошибки не было в MATE. Может не встречаться в GNOME. Встретил только в KDE.
Ошибки нет, если запустить программу напрямую из терминала.
Ошибки нет, если запустить desktop-файл через gio launch
.
Выдача прав a+x на desktop-файлы не помогает.
Запуск через kioclient5 exec
прерывается ошибкой:
Неизвестная ошибка 100
execvp: Ошибка формата выполняемого файла
Отправьте сообщение об ошибке на https://bugs.kde.org
Проблема
Команда в desktop-файле:
[Desktop Entry]
...
Exec=sqldeveloper
...
Проверяем в терминале:
$ which sqldeveloper
/usr/local/bin/sqldeveloper
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: ASCII text
$ head -2 "$(which sqldeveloper)"
/opt/sqldeveloper/sqldeveloper.sh
$ cat /opt/sqldeveloper/sqldeveloper.sh
#!/bin/bash
cd "`dirname $0`"/sqldeveloper/bin && bash sqldeveloper $*
Вывод простой: штатный desktop-файл ссылается на шелл-скрипт без шибенга, который запускает шелл-скрипт с шибенгом. Проблема именно в первом.
Решение
- Изменить параметр
Exec
в desktop-файле на корректный скрипт или бинарник. - Добавить шибенг в первый шелл-скрипт, тогда результат должен быть таким:
$ file "$(which sqldeveloper)"
/usr/local/bin/sqldeveloper: Bourne-Again shell script, ASCII text executable
Предполагаю, что аналогичное решение подойдёт для другого ПО. По крайней мере, стоит попробовать.
Содержание
- Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
- О разрядности дистрибутивов Linux и о программ
- Запуск ARM файлов в Linux
- Заключение
- execvp: Ошибка формата выполняемого файла
- 🛠️ Исправление ошибки «Exec format» при запуске скриптов командой run-parts
- Решение ошибки «Exec format» при запуске скриптов командой run-parts
- Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
- О разрядности дистрибутивов Linux и о программ
- Запуск ARM файлов в Linux
- Заключение
Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
Причинами данной ошибки могут быть:
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Источник
execvp: Ошибка формата выполняемого файла
3) (Запускается только до перезагрузки ПК и только через root)
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to ‘/tmp/runtime-root’
void Autorization::listen() *2 62000
bool Setting::connectDatabase() QThread(0x5617d599a3a0)
void SqlWorker::connectToDatabase(QString) «/root/.joxi/setting»
После каждой перезагрузки ПК, Joxi перестаёт запускаться и заново надо его переустанавливать.
Скрипт joxi.sh выдаёт ошибку «execvp: Ошибка формата выполняемого файла«.
[sudo] пароль для alexandr:
Creating directory joxi
Verifying archive integrity. 100% MD5 checksums are OK. All good.
-rwx—— 1 alexandr alexandr 351 июн 5 22:32 install.sh
-rwx—— 1 alexandr alexandr 4305176 июн 5 22:32 joxi
-rwx—— 1 alexandr alexandr 86 июн 5 22:32 joxi.desktop
-rwx—— 1 alexandr alexandr 50 июн 5 22:32 joxi.sh
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
Operating System: KDE neon 5.18
KDE Plasma Version: 5.18.5
KDE Frameworks Version: 5.70.0
Qt Version: 5.14.2
Kernel Version: 5.3.0-53-generic
OS Type: 64-bit
Источник
🛠️ Исправление ошибки «Exec format» при запуске скриптов командой run-parts
Решение ошибки «Exec format» при запуске скриптов командой run-parts
Чтобы запустить все скрипты в папке «Documents», я запустил:
Я получил следующее сообщение об ошибке:
Bourne shell, или совместимый шеллl:
Bash:
Perl:
Python 2.x:
Python 3.x:
Это то, что мы называем шебанг.
Теперь вернемся к теме.
Отредактируйте ваши скрипты, используя ваш любимый редактор:
Добавьте шебанг в начале скрипта:
Теперь вы можете без проблем запускать скрипты с помощью команды run-parts, используя команду run-parts.
Вы также можете использовать утилиту ShellCheck для поиска проблем в своих скриптах оболочки.
Anything in here will be replaced on browsers that support the canvas element
Источник
Я пытаюсь запустить программу, но ошибка происходит так:
Результатом file program было:
Как я могу исправить эту ошибку?
Я использую Ubuntu 14.04.2 (amd64) с VMware. Я тоже пробовал с Ubuntu i386, но результат был таким же.
Вы пытаетесь запустить исполняемый файл, скомпилированный для архитектуры ARM на архитектуре x86-64, что очень похоже на запрос вашего процессора, который говорит только по-английски, указывать направление на китайском.
Если вам нужно запустить этот исполняемый файл, у вас есть два варианта:
Получить версию исполняемого файла x86-64 (любым способом; если вам не удается получить версию исполняемого файла x86-64, но вы можете получить его исходный код, вы можете попытаться перекомпилировать его на виртуальной машине );
Установите Ubuntu Server for ARM вместо Ubuntu 14.04.2 (amd64). Для этого требуется либо физическая машина, работающая на архитектуре ARM, либо программное обеспечение для виртуализации, которое может эмулировать ее.
Это также может произойти, если вы попытаетесь запустить исполняемый файл x86-64 на 32-разрядной платформе.
В одном конкретном случае я скачал код Visual Studio и попытался запустить его на своей установке Ubuntu, но я не понял, что я установил 32-битную Ubuntu в эту виртуальную машину. Я получил эту ошибку, но после загрузки 32-разрядной версии, он работал без проблем.
qemu затем выполнит эмуляцию syscall при запуске исполняемого файла. Это работает для большинства двоичных файлов ARM, но есть некоторые, которые могут работать неправильно.
Такая ошибка может возникнуть, если выполняются все следующие условия:
Если java в системе установлено более одного, это может произойти и не будет установлено по умолчанию. На Ubuntu14.04 LTS я мог решить ее, выполнив следующее и выбрав java нужное.
Это также может произойти, если двоичный файл использует реализацию libc, которая не является libc, например, musl. В эти дни эта конкретная проблема, скорее всего, встречается при попытке запуска двоичного файла с libc в контейнере Docker с изображением, основанным на alpine. Ничто не может быть сделано с самим двоичным файлом для поддержки обеих сред, потому что реализация libc всегда должна быть статически связана, то есть встроена непосредственно в двоичный файл, по причинам.
Источник
Решение проблемы с ошибкой «bash: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла»
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
Если у вас англоязычная локаль, то ошибка будет примерно такой:
Причинами данной ошибки могут быть:
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
О разрядности дистрибутивов Linux и о программ
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Источник
You have a 64-bit x86 CPU (indicated by the lm
flag in /proc/cpuinfo
), but you’re running a 32-bit kernel. The program you’re trying to run requires a 64-bit runtime, so it won’t work as-is: even on a 64-bit CPU, a 32-bit kernel can’t run 64-bit programs.
If you can find a 32-bit build of the program (or build it yourself), use that.
Alternatively, you can install a 64-bit kernel, reboot, and then install the 64-bit libraries required by your program.
To install a 64-bit kernel, run
sudo dpkg --add-architecture amd64
sudo apt-get update
sudo apt-get install linux-image-generic:amd64
This will install the latest 64-bit Xenial kernel, along with various supporting 64-bit packages. Once you reboot, you should find that uname -a
shows x86_64
rather than i686
. If you attempt to run your program again, it might just work, or you’ll get an error because of missing libraries; in the latter case, install the corresponding packages (use apt-file
to find them) to get the program working.
В операционной системе Linux при запуске скаченного файла, либо при запуске самостоятельно скомпилированного файла вы можете столкнуться с ошибкой:
bash: /путь/до/файла: не удаётся запустить бинарный файл: Ошибка формата выполняемого файла
Если у вас англоязычная локаль, то ошибка будет примерно такой:
bash: ./program: cannot execute binary file: Exec format error
В самой ошибке вместо /путь/до/файла и ./program будет указан путь до файла программы, который вы хотите запустить.
- Причинами данной ошибки могут быть:
- попытка запустить 64-битный файл на 32-битной системе
- файл скомпилирован для другой архитектуры (например, для ARM, а вы пытаетесь запустить его на ПК)
- вы пытаетесь выполнить не исполнимый файл, а ссылку
- файл размещён в совместной (shared) папке
Чтобы получить информацию о файле, который вы пытаетесь запустить, можно использовать утилиту file, после которой укажите путь до файла:
file /путь/до/программы
Пример вывода:
program: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=03ada11d91d298913990bfc074ccc3a380d26b69, with debug_info, not stripped
Здесь мы видим, что файл предназначен для 64-битной системы, об этом говорит запись 64-bit, для процессора с архитектурой x86-64.
Ещё один пример:
program: ELF-32-bit LSB executable, ARM, EABI4 version 1 (SYSV), dynamically linked(uses share libs), for GNU/LINUX 2.6.16, not stripped
Этот файл для 32-битных систем, для процессора с архитектурой ARM EABI4.
Если вы не знаете, какой битности ваша система, то выполните команду:
uname -m
Для 64-битных систем будет выведено x86_64, а для 32-битных – x86.
О разрядности дистрибутивов Linux и о программ
На компьютер с 32-битным процессором вы можете установить только 32-битную операционную систему и в ней запускать только 32-битные программы.
На компьютер с 64-битным процессором вы можете установить как 64-битную ОС, так и 32-битный Linux. В случае, если вы установили 64-битный дистрибутив Linux, то в нём вы можете запускать и 64-битные программы и 32-битные. А если вы установили 32-битный дистрибутив, то в нём возможно запускать только 32-битные программы.
Итак, если у вас 32-битная система, а файл для 64-битной системы или даже для ARM архитектуры, то у вас следующие варианты:
- скачать файл подходящей для вас битности и архитектуры
- если вы самостоятельно компилировали файл из исходного кода, то заново скомпилируйте для процессора вашей архитектуры
Запуск ARM файлов в Linux
Часто можно запустить исполнимые образы ARM на amd64 системах если установить пакеты binfmt-support, qemu, и qemu-user-static:
sudo apt install binfmt-support qemu qemu-user-static
Заключение
Итак, ошибка формата выполняемого файла с невозможностью запустить бинарный файл возникает из-за несоответствия программы операционной системе или архитектуре процессора. Эта проблема не должна возникать, если вы установили программу из исходных репозиториев (кроме случаев неправильной настройки источников репозитория). При возникновении этой проблемы поищите файл, подходящий для вашей архитектуры или скомпилируйте файл из исходных кодов под архитектуру вашей операционной системы.
Понравиласть статья? Жми лайк или расскажи своим друзьям!
Похожие новости:
Linux (видео уроки) Обзор Linux видео уроки 1. Введение в ОС Linux/Unix Ubuntu. Видео linux уроки 2017 года. gnu linux operating system. Linux администрирование и linux уроки, linux скачать. To linux distros for 2017 and обзор linux mint 18 1.
Linux mint 19.1 (скачать) Развиваемый сообществом дистрибутив Linux mint, основанный на Ubuntu и Debian, который ставит целью предоставить пользователю «современную, элегантную и удобную операционную систему, которая одновременно является мощной и
Стала доступна для скачивания финальная версия Linux Mint 19 сразу со всеми основными вариантами рабочих столов: Cinnamon, MATE и Xfce. Если вы только начинаете знакомиться с удивительным миром Linux, то поясню: Cinnamon – это самый передовой и
Rosa Linux — Linux из России. ROSA Fresh. Сделана для дома. Создана для вас. ROSA Fresh — это современная отечественная операционная система Linux, создаваемая сообществом и легально доступная всем желающим совершенно бесплатно и без регистрации.
Иногда программа не запускается из-за отсутствия библиотеки определённой версии, при этом в системе может присутствовать эта самая библиотека, но другой версии. Чтобы было понятно, после одного из обновлений (в Arch Linux) перестал запускаться
Новая версия Deepin 15 включает в себя новый дизайн Центра Управления и компьютера, он имеет новый размытый и прозрачный стиль, также включены новые взаимодействия для угловой навигации и оконного менеджера наряду с выбором обоев рабочего стола,
Новые возможности в Linux Mint 19.3. Linux Mint 19.3 — это долгосрочный релиз поддержки, который будет поддерживаться до 2023 года. Он поставляется с обновленным программным обеспечением и приносит уточнения и множество новых функций, чтобы сделать
Linux Mint 19 – это релиз с длительной поддержкой до 2023 года. Он поставляется с обновлённым программным обеспечением и приносит усовершенствования и множество новых функций, чтобы сделать ваш рабочий стол более удобным. На момент написания, Linux
Linux Mint 18.1 Serena Cinnamon (Подробный обзор) Подробный обзор Beta версии Linux Mint 18.1 Serena Cinnamon Linux Mint команда объявила о выпуске обновления для 18.x филиала проекта. В новой версии, Linux Mint 18.1, доступен в двух версиях
Linux mint 18.2 Основные новшества Linux Mint 18.2 (MATE, Cinnamon, KDE и Xfce): В состав включены новые версии десктоп-окружений MATE 1.18 и Cinnamon 3.4, оформление и организация работы в которых продолжает развитие идей GNOME 2 — пользователю
Какой линукс выбрать? Какой linux лучше? Сегодня мы разберемся какие дистрибутивы линукс бывают и какой из них самый лучший. Первое что нужно понять: дистрибутивов линуксов очень много, больше 100. Но, как и в любой экосистеме, тут существует
Начало работы с btrfs для Linux. Файловая система B-tree — это файловая система и менеджер томов, объединенные в одно целое. Он предлагает много перспектив для доставки расширенного набора функций файловой системы в Linux.
Команда с гордостью объявляет о выпуске Linux Mint 20” Ulyana » Cinnamon Edition. Linux Mint 20-это долгосрочный релиз поддержки, который будет поддерживаться до 2025 года. Он поставляется с обновленным программным обеспечением и приносит
Linux Mint 20.2 Ума (Uma) Скачать. Самая большая новость в этом месяце-предстоящий выпуск Linux Mint 20.2 “Uma”. Мы надеемся, что БЕТА-версия будет готова к середине июня.
Новости Linux Январь 2017. НОВОСТИ LINUX, UBUNTU 2017 ЯНВАРЬ В Telegram появилась возможность удалить отправленное сообщения В мессенджере Telegram появилась возможность удалить отправленное сообщения. И если раньше оно удалялось только с одной
Обзор Solus 3 с рабочим окружением Budgie Этот релиз включает в себя из-из-коробки поддержка, универсальных программных пакетов для Linux. Поддержка снимков снимает давление со стороны поставщиков программного обеспечения для конкретной платформы,
Все три издания Linux Mint 19 (Cinnamon, MATE, Xfce) в настоящее время доступны для публичного тестирования. Официально новую бета версию планируют представить 4 июня 2018 года. Хотя перед началом публичных тестирования уже отловлено и исправлено
Преимущества и проблемы беспилотных летательных аппаратов БПЛА или беспилотный летательный аппарат представляет собой самолет с дистанционным управлением. Он может работать удаленно в режиме реального времени или запрограммирован для автономного
Новая ICQ (Windows, Linux, Mac, Web) Что нового: Mail Group представила обновленный мессенджер ICQ. Новая версия знаменитой «аськи» стала «умной, быстрой, гибкой». Разработчики добавили несколько интересных функций, которые
RFRemix 26 основанный на Fedora 26 (Russian Fedora) Официально объявили о выходе Fedora 26. Это проект по поддержке пользователей и разработчиков открытого ПО в России. Основная цель проекта — обеспечить, чтобы Fedora полностью отвечала
You have a 64-bit x86 CPU (indicated by the lm
flag in /proc/cpuinfo
), but you’re running a 32-bit kernel. The program you’re trying to run requires a 64-bit runtime, so it won’t work as-is: even on a 64-bit CPU, a 32-bit kernel can’t run 64-bit programs.
If you can find a 32-bit build of the program (or build it yourself), use that.
Alternatively, you can install a 64-bit kernel, reboot, and then install the 64-bit libraries required by your program.
To install a 64-bit kernel, run
sudo dpkg --add-architecture amd64
sudo apt-get update
sudo apt-get install linux-image-generic:amd64
This will install the latest 64-bit Xenial kernel, along with various supporting 64-bit packages. Once you reboot, you should find that uname -a
shows x86_64
rather than i686
. If you attempt to run your program again, it might just work, or you’ll get an error because of missing libraries; in the latter case, install the corresponding packages (use apt-file
to find them) to get the program working.