- Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Re: Как запустить бинарный файл?
- Как просмотреть бинарный файл?
- Обновить
- Как запустить бинарный файл в Linux
- 8 ответов
- Как просмотреть двоичный файл?
Как запустить бинарный файл?
Господа специалисты как запустить бинарный файл?И можно ли с диска Ubuntu 7.10 взять дрова для установленной Mandriva.
Re: Как запустить бинарный файл?
>И можно ли с диска Ubuntu 7.10 взять дрова для установленной Mandriva.
можно, но не человеку который не знает:
>как запустить бинарный файл
chmod +x file && ./file
Re: Как запустить бинарный файл?
>chmod +x file && ./file Спасибо попробую.Учится не когда не поздно.
Re: Как запустить бинарный файл?
предварително советую man chmod 🙂
Re: Как запустить бинарный файл?
и еще man bash/zsh/sh/etc — по выбору
Re: Как запустить бинарный файл?
man chmod +x file && ./file так полным текстом?Что-ли? ИЛИ
man bash/zsh/sh/etc +file
Re: Как запустить бинарный файл?
Не, man — это мануал читать, chmod +x file && ./file — это тебе для запуска.
Re: Как запустить бинарный файл?
cd /home/user/bin_file_location/
chmod +x bin_file
./bin_file
(если файл вообще является исполняемым в linux)
Re: Как запустить бинарный файл?
>(если файл вообще является исполняемым в linux)
Драйвер нужный на диске с другим дистр.
Re: Как запустить бинарный файл?
>>(если файл вообще является исполняемым в linux) Драйвер нужный на диске с другим дистр.
Источник
Как просмотреть бинарный файл?
Из того, что я понимаю, компилятор создает двоичный файл, состоящий из 1 и 0, который может прочитать процессор. У меня есть бинарный файл, но как мне открыть его, чтобы увидеть 1 и 0, которые там? Текстовый редактор говорит, что не может открыть его .
PS У меня есть сборочный двоичный файл, который должен быть простым двоичным кодом 1 и 0?
если вы не хотите редактировать это, конечно. Большинство дистрибутивов Linux имеют hexdump по умолчанию (но, очевидно, не все).
Обновить
xxd делает двоичные и шестнадцатеричные
Различные люди ответили на некоторые аспекты запроса, но не на все.
Все файлы на компьютерах хранятся как 1 и 0. Изображения, текстовые файлы, музыка, исполняемые приложения, объектные файлы и т. Д.
Все они 0 и 1. Разница лишь в том, что они интерпретируются по-разному в зависимости от того, что их открывает.
Когда вы просматриваете текстовый файл, используя cat , исполняемый файл ( cat в данном случае) читает все 1 и 0 и представляет их вам, преобразовывая их в символы из вашего соответствующего алфавита или языка.
Когда вы просматриваете файл, используя программу просмотра изображений, он берет все 1 и 0 и превращает их в изображение, в зависимости от формата файла и некоторой логики, чтобы решить все это.
Скомпилированные бинарные файлы ничем не отличаются, они хранятся как 1 и 0.
Ответ arzyfex дает вам инструменты для просмотра этих файлов по-разному, но чтение файла в двоичном формате работает для любого файла на компьютере, так же как и просмотр его как восьмеричного, или шестнадцатеричного, или даже ASCII, просто не может иметь смысла в каждом из этих форматов.
Если вы хотите понять, что делает исполняемый двоичный файл, вам нужно просмотреть его таким образом, чтобы он показал вам язык ассемблера (как начало), который вы можете сделать, используя:
objdump -d /path/to/binary
который является дизассемблером, он берет двоичный контент и преобразует его обратно в ассемблер (который является языком программирования очень низкого уровня). objdump не всегда устанавливается по умолчанию, поэтому может потребоваться установка в зависимости от вашей среды Linux.
Некоторое внешнее чтение.
NB: как указывает @Wildcard, важно отметить, что файлы не содержат символов 1 и 0 (как вы видите их на экране), они содержат фактические числовые данные, отдельные биты информации, которые либо включены (1) или выключено (0). Даже это описание является лишь приближением к истине. Ключевым моментом является то, что если вы найдете средство просмотра, которое показывает вам 1 и 0, даже если оно все еще интерпретирует данные из файла, а затем показывает символы ASCII для 0 и 1. Данные хранятся в двоичном формате ( см. ссылку на двоичный номер выше). В вики-записи сообщества Пьера-Оливье эта тема описана более подробно.
Источник
Как запустить бинарный файл в 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 возвращает полный путь к каталогу, в котором вы открываете терминал (оболочку). Я надеюсь, что это помогает. Извините за мой английский язык)
Источник
Как просмотреть двоичный файл?
Из того, что я понимаю, компилятор создает двоичный файл, состоящий из 1 и 0, который может читать ЦП. У меня есть двоичный файл, но как его открыть, чтобы увидеть 1 и 0, которые есть? Текстовый редактор говорит, что он не может открыть его …
PS У меня есть сборка скомпилированных двоичных файлов, которая должна быть простым двоичным кодом 1 и 0?
возможно, если вы не хотите редактировать его, конечно. Большинство дистрибутивов linux по умолчанию имеют hexdump (но, очевидно, не все).
Обновить
xxd выполняет двоичный и шестнадцатеричный
Различные люди ответили на некоторые аспекты запроса, но не все.
Все файлы на компьютерах хранятся как 1, так и 0. Изображения, текстовые файлы, музыка, исполняемые приложения, объектные файлы и т. Д.
Они все 0 и 1. Единственное различие заключается в том, что они интерпретируются по-разному в зависимости от того, что их открывает.
Когда вы просматриваете текстовый файл с помощью cat , исполняемый файл (в этом случае cat ) считывает все значения 1 и 0 и представляет их вам, преобразуя их в символы с вашего соответствующего алфавита или языка.
Когда вы просматриваете файл с помощью средства просмотра изображений, он принимает все 1 и 0 и превращает их в изображение, в зависимости от формата файла и некоторой логики, чтобы все это исправить.
Скомпилированные двоичные файлы не отличаются друг от друга, они хранятся как 1, так и 0.
Ответ arzyfex дает вам инструменты для просмотра этих файлов по-разному, но чтение файла как двоичного файла работает для любого файла на компьютере, так же как просмотр его как восьмеричный, или шестнадцатеричный, или даже ASCII, это просто не имеет смысла в каждом этих форматов.
Если вы хотите понять, что делает исполняемый двоичный файл, вам нужно просмотреть его так, чтобы он показывал вам язык ассемблера (как начало), который вы можете использовать,
objdump -d /path/to/binary
который является дизассемблером, он берет двоичный контент и преобразует его обратно в ассемблер (который является языком программирования на очень низком уровне). objdump не всегда устанавливается по умолчанию, поэтому его необходимо установить в зависимости от среды Linux.
Некоторые внешние чтения.
NB: как указывает @Wildcard, важно отметить, что файлы не содержат символов 1 и 0 (как вы видите их на экране), они содержат фактические числовые данные, отдельные биты информации, которые либо находятся на (1) или выключить (0). Даже это описание является лишь приближением истины. Они указывают на то, что если вы найдете зрителя, который показывает вам 1 и 0, даже это все еще интерпретирует данные из файла, а затем показывает вам символы ASCII для 0 и 1. Данные хранятся в двоичном формате ( см. ссылку Двоичный номер выше). Прединичная публикация сообщества Пьера-Оливье охватывает это более подробно.
На низком уровне файл кодируется как последовательность из 0 и 1.
Но даже программисты редко ходят туда на практике.
Во-первых (и что более важно, чем эта история 0 и 1), вы должны понимать, что все, что манипулирует компьютером, закодировано цифрами .
Символ кодируется числом, используя таблицы набора символов. Например, буква «A» имеет значение 65 при кодировании с использованием ASCII. См. http://www.asciitable.com
Пиксель кодируется одним или несколькими номерами (существует много графических форматов). Например, в стандартном трехцветном формате желтый пиксель кодируется как: 255 для красного, 255 для зеленого, 0 для синего. См. http://www.quackit.com/css/css_color_codes.cfm (выберите цвет и посмотрите ячейки R, G и B)
Бинарный исполняемый файл записывается в Assembly; каждая инструкция сборки кодируется как числа. Например, инструкция сборки MOVB $0x61,%al кодируется двумя номерами: 176,97 См. http://www.sparksandflames.com/files/x86InstructionChart.html (Каждая команда имеет связанный номер от 00 до FF, поскольку шестнадцатеричная нотация, см. ниже)
Во-вторых : каждый номер может иметь несколько представлений или обозначений .
Скажем, у меня 23 яблока.
- Если я создам группы из десяти яблок, я получу: 2 десятых и 3 отдельных яблока. Это именно то, что мы имеем в виду, когда пишем 23: 2 (десятых), затем 3 (единицы).
Но я также могу сделать группы из 16 яблок. Поэтому я получу одну группу из 16 и 7 яблок. В шестнадцатеричной нотации (так называется 16-я основа) я напишу: 17. Чтобы отличить десятичную нотацию, шестнадцатеричную нотацию обычно отмечают с помощью префикса или суффикса: 17h, # 17 или $ 17. Но как представить более 9 групп из 16 или более из 9 одиноких яблок? Просто мы используем буквы от A (10) до F (15). Число 31 (как в 34 яблоках) записывается как # 1F в шестнадцатеричном виде.
По тому же принципу мы можем делать только группы из двух яблок. (И группа из двух групп из двух яблок, т. Е. Группы из 2×2-яблок и т. Д.). Затем 23: 1 группа из 2x2x2x2-яблок, 0 групп из 2x2x2-яблок, 1 группа из 2×2-яблок, 1 группа из 2 яблок и 1 одно яблоко. Который будет отмечен 10111 в двоичном
Физически механизмы, позволяющие использовать два состояния (переключатели), легко сделать, а также на диске, хранящемся в памяти.
Вот почему данные и программы, рассматриваемые как числа, записываются и обрабатываются в двоичной форме.
Затем переводится – в зависимости от типа данных – в соответствующую форму (буква А, желтый пиксель) или выполняется (инструкция MOV).
hexdump перечисляет числа, кодирующие данные (или программу сборки) в шестнадцатеричной форме. Затем вы можете использовать калькулятор для получения соответствующей бинарной формы.
Я бы начал с od (восьмеричный дамп) и в зависимости от системы мог найти полезные инструменты, такие как objdump .
Вы можете открыть его в шестнадцатеричном редакторе, который показывает его как последовательность шестнадцатеричных значений. xxd file
Что вы пытаетесь достичь?
bvi – это двоичный редактор VIsual с комбинациями клавиш vim. Он доступен для большинства Linux-систем.
Важная часть, о которой вы все еще считаете смущенной: шестнадцатеричные значения – это просто другое представление двоичных значений. Большинство шестнадцатеричных редакторов или шестнадцатеричных команд будут отображать значения в шестнадцатеричной базе, поскольку они более читабельны, чем в двоичной базе.
Что равно 35 и 32 в десятичной
Также 35 и 32 в десятичной
Вы можете просмотреть файл в двоичном формате в vim , путем:
- Открытие файла в vim
- Ввод :% !xxd -b
Команда xxd может быть дополнительно изменена, например:
- Добавив -g4 , который будет группировать биты в 32-разрядных пакетах
- Добавив -c4 , который будет форматировать вывод, будет иметь 4 байта на строку
Добавление обоих флагов выше, даст вам одно 32-битное целое число в строке.
Команда строк Linux печатает строки печатаемых символов в файлах, например:
и т. д., это более читаемо, чем двоичное.
Вы можете сделать это, например, этот рубиновый однострочный:
Традиционная система на основе C имеет плохую поддержку для вывода данных в двоичном формате AFAIK. Обычно это не очень полезно, так как читать его в отличие от шестнадцатеричных дамб довольно сложно.
GHex – ваш друг 🙂
Вы можете установить его с помощью командной строки
Источник