Bash: ./filename: не удается выполнить двоичный файл
Я не смог выполнить скомпилированный код на Фортране в Ubuntu 11.10 32 бит.
Сообщение об ошибке
Я также установил библиотеки gcc и gfortran.
Может ли кто-нибудь помочь?
Как видно из вывода, file um который вы опубликовали в комментарии, ваш двоичный файл является 64-разрядным двоичным файлом.
32-битные системы не могут запускать 64-битные двоичные файлы, это работает только наоборот.
Попробуйте сделать файл исполняемым
Тогда попробуйте запустить его
Но если это исполняемый файл, скомпилированный для Windows, вам, вероятно, нужно установить Wine.
Другое решение для людей, у которых возникла эта проблема, за исключением части о несоответствующих битах, — это запуск файла без команды «bash».
Просто используйте chmod +x ‘path to the file’ и запустите ‘the path to the file’ в терминале. Так я решил свою проблему.
Другой возможный источник этой ошибки: попытка запустить двоичный исполняемый файл Linux на Mac или наоборот.
Например, пытаясь запустить true двоичный файл с моего Mac на компьютере с Ubuntu, на который я его отправил:
Если вы загрузили двоичный файл и выполнить его не удалось с этой ошибкой, проверьте, загрузили ли вы версию для неправильной ОС.
Для меня, копирование двоичного файла в Приложения на моем Mac, а затем в мой путь испортило его на моем Mac. Я почти уверен, что папка «Приложения» превратила двоичный файл в псевдоним вместо реального двоичного файла.
Я снова разархивировал бинарный файл из моих загрузок и просто mv отредактировал его на свой путь, и он работал нормально.
Источник
Запуск бинарных файлов
Помогите, пожалуйста, с такой проблемой: в Убунту не могу запустить ни один бинарный файл на смонтированном разделе. Ругается, пишет:
unable to execute file_name Отказано в доступе
И через sudo то же самое. Хотя флаг исполняемого файла выставлен, флаг exec при монтировании имеется, все права на раздел у моего пользователя.
да, но в свойствах файла «контекст selinux: неизвестно». я правильно понимаю, это значит, что ни какие ограничения не включены?
скорее всего, раздел смонтирован с опцией noexec. вывод mount пожалуйста.
не дочитал пост, сорри.
Зависит от типа policy. Если полиси установлена в targeted (как в RH/CentOS, SELINUXTYPE=), то огранияений быть не должно.
chmod a+x filename ?
Что за ФС?
>chmod a+x filename ? пробовал не помогло
хм, у меня установлена только библиотека libselinux1, но никаких других утилит нет. что мне лучше всего поставить для настройки для настройки доступа?
setenforce 0 && ./filename ?
> не помогло
_как_ не помогло? что за права теперь на файл? есть ли что в dmesg? какая, всё-таки, ФС?
Источник
Запуск исполняемых файлов.
Сразу укажу, что я полнейший нуб. Учусь пользоваться линуксом. Сейчас стоит fedora 22. Не запускаются скомпилированные исполняемые файлы. Компилирую СИшные файлики через ком строку. «gcc -c file.c -o file.o» и «gcc file.o -o file». После этих действий выдает ошибку при запуске через sh «не могу запустить бинарный файл.» Не хочет запускать ни file.o, ни file. Переустанавливал bash и gcc через ком строку с помощью dnf reinstall, не помогло. Мне интересен любой способ решения этой проблемы, который я буду способен в кратчайшие сроки освоить.
Предлагаешь нам самим догадаться, как именно ты запускаешь этот файл?
Дай право на выполнение:
[root@localhost программы]# gcc -c pr1.c -o pr1.o [root@localhost программы]# gcc pr1.o -o pr1 [root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл [root@localhost программы]# chmod +x pr1 [root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл [root@localhost программы]# ls pr1 pr1.c pr1.o адрес [root@localhost программы]# chmod a=x pr1.o [root@localhost программы]# pr1.o bash: pr1.o: команда не найдена. ^C [root@localhost программы]# sh pr1.o pr1.o: pr1.o: не могу запустить бинарный файл [root@localhost программы]# ./pr1.o bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла [root@localhost программы]# ./pr1 указатель не определен
[root@localhost программы]# chmod +x pr1.o
[root@localhost программы]# ./pr1.o
bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла
Ну фиг его знает. Выложи что ты там собираешь.
Да, вообще все мной собранные проги, которые даже раньше работали, не запускаются.
Источник
Как запустить бинарный файл в Linux
У меня есть файл с именем commanKT и я хочу запустить его в терминале Linux. Может кто-то помочь, дав команду запустить этот файл? Я пытался ./commonRT , но я получаю сообщение об ошибке:
8 ответов
Чтобы выполнить двоичный файл или .run-файл в Linux из оболочки, используйте косую черту друга
и если произойдет сбой, скажем, из-за разрешений, вы можете попробовать это перед выполнением
Надеюсь, это поможет
🙂 Если вы не опечатка, почему вы используете ./commonRT вместо ./commonKT ??
Возможно, вы скомпилировали бинарный файл с несовместимыми параметрами архитектуры на хосте сборки и хосте выполнения. Можете ли вы взглянуть на включенные настройки цели через
на вашем хосте сборки? В частности, переменная COLLECT_GCC_OPTIONS может дать вам ценную отладочную информацию. Затем взгляните на возможности процессора на хосте выполнения через
Обратите внимание на несоответствия, такие как -msse4.2 [enabled] на хосте сборки, но отсутствует sse4_2 флаг в возможностях процессора.
Если это не помогает, предоставьте выходные данные ldd commonKT как на хосте сборки, так и на хосте выполнения.
Это ответ на @craq:
Я только что скомпилировал файл из источника C и установил его для запуска с помощью chmod. От gcc не было ни предупреждений, ни сообщений об ошибках.
Я немного удивлен, что вам пришлось «установить его на исполняемый файл» — мой gcc всегда устанавливает сам флаг исполняемого файла , Это говорит о том, что gcc не ожидал, что это будет конечный исполняемый файл, или что он не ожидал, что он будет исполняемым в этой системе.
Теперь я попытался создать объектный файл, вот так:
( hello.c — типичная программа «Hello World».) Но мое сообщение об ошибке немного отличается:
С другой стороны, таким образом, выходные данные команды file идентичны вашей:
Тогда как, если я правильно скомпилирую, его вывод будет намного длиннее.
Я говорю следующее: я подозреваю, что это как-то связано с тем, как вы компилируете и связываете свой код. Может быть, вы можете пролить свет на то, как вы это делаете?
Единственный способ, который подходит мне ):
Затем запустите его, написав
Если вы получили ошибку разрешения, вам может потребоваться запустить приложение с привилегиями root:
опция компиляции -c делает компиляцию только компиляцией и сборкой, но без ссылки.
Если это не опечатка, как указывалось ранее, это может быть неправильными параметрами компилятора, такими как компиляция 64-битной под 32-битной. Это не должен быть набор инструментов.
полный путь для двоичного файла. Например: /home /vitaliy2034 /имя_бинального_файла. Или же используйте директиву «./+binary_file_name». ‘./’ в системе unix возвращает полный путь к каталогу, в котором вы открываете терминал (оболочку). Я надеюсь, что это помогает. Извините за мой английский язык)
Источник
Как устанавливать bin файлы в Linux
Не смотря, на то, что большинство программ в операционной системе Linux (в моем случае Ubuntu) можно установить из Центра приложений, тем самым обеспечивая совместимость с системой, иногда вам может понадобится установить новую версию программы или наоборот, старую, которой может не оказаться в списке.
Такие программы чаще всего распространяются, в формате .bin также известные как бинарные файлы. Бывает, что они запакованы в архив, а иногда как исполняемые файлы. Установка bin linux, может быть произведена через терминал либо же через графический интерфейс. Рассмотрим оба варианта.
Установка bin файлов в Linux
Консольный вариант
1. Для начала в файловом менеджере, нужно найти наш бинарник.
2. Откроем терминал, сочетанием клавиш Ctrl+Alt+T.
3. Зайдем в режим суперпользователя (под рутом). Для этого введем следующую команду в терминале:
Затем нужно ввести пароль.
4. Теперь, в терминале нам нужно зайти в ту директорию, где расположен наш бинарник. В моем случае это будет так:
5. Дайте права на выполнение файла .bin, командой:
chmod +x thefile.bin
В моем случае это выглядит так:
chmod +x clip2net.bin
6. Теперь выполните его. Для этого находясь уже в той директории, где находится бинарный файл введем точку и слэш, затем имя файла. В случае со мной это выглядит так:
7. После этой команды, установщик программы запустился и спрашивает меня на каком языке я хотел бы установить bin файл в linux.
8. Далее устанавливаем программу как обычно это делается в ОС Windows.
Графический вариант
Он ненамного проще, но для новичков, которые недавно перешли с Windows будет понятнее. Первые 3 пункта из консольного варианта все же придется выполнить. Затем нужно выбрать файл, нажать правой кнопкой мыши, выбрать пункт «свойства». На вкладке права, нужно поставить галочку напротив пункта «Разрешить выполнение файла как программы».
Закрываем окно. И перетаскиваем этот файл в терминал, запущенный от суперпользователя, имя файла и путь уже впишутся автоматически, остается лишь нажать на кнопку «Enter». Далее, вы можете установить bin файл, как и в первом варианте. На этом все.
Источник