Как программы в / каталоге bin скомпилированы в нечитаемый формат?

Я заметил, что компилируется большинство моих команд/программ в / каталоге bin. Я хочу копировать этот нечитаемый формат кода сам. Кто-то может сказать мне, почему и/или как эти программы получают этот путь?

[зеленая премия штампа]: Нет ли команда удара для печати всего "человекочитаемого" текста из файла?

7
задан 26 August 2012 в 17:34

5 ответов

Команды/программы в /bin не нечитаемы , но они, как Вы говорите, скомпилированный. Это означает, что они были первоначально записаны в C (или некоторый другой язык программирования) и были скомпилированы в машинный код (двоичный файл), таким образом, процессор может выполнить код. Чтобы сделать то же, просто запишите программу, в которой Вы нуждаетесь в C и выполняете эти gcc команда для создания исполняемого файла.

Для печати любого читаемого пользователем текста в использовании файлов strings < /bin/file,

14
ответ дан 21 October 2019 в 13:06

Введение

Когда программа компилируется от, говорят что C или исходный код C++, компилятор такой как gcc (см. ниже), переводит тот код на собственный двоичный язык ЦП, так, чтобы программа могла быть выполнена. Таким образом человекочитаемый материал (исходный код) превращен в нечеловекочитаемый формат (машиночитаемый двоичный код).

Двоичные файлы и файловая система

Если Вы входите echo $PATH, Вы будете видеть местоположения всех исполняемых файлов в системе, обоих скомпилированных двоичных файлах и сценариях:

/home/mike/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

В системных инструментах ключа иерархии файловой системы такой как cat и getty присутствуют в /bin и /sbin соответственно, и другие инструменты такой как dpkg и chroot присутствуют в /usr/bin и /usr/sbin соответственно. При компиляции программы путем загрузки исходного кода, конфигурирования сборки и установки его, программа по умолчанию должна войти /usr/local/bin и его другие файлы в /usr/local иерархия.

Компиляторы

Вероятно, один из самых известных инструментов, используемых для компиляции двоичных файлов, gcc, который известен как Набор Компилятора GNU и ранее как компилятор C GNU; версия, поставленная с Ubuntu 12.04, gcc 4.6.3. Поскольку это отмечает в официальном руководстве GNU,

GCC is an integrated distribution of compilers for several major programming 
languages. These languages currently include C, C++, Objective-C, Objective-C++, 
Java, Fortran, Ada, and Go.

Компиляция двоичного файла

Три команды ./configure, make и sudo make install (или sudo checkinstall) часто используются вместе для компиляции программы.

Выполнение ./configure, среди других вещей, проверяет версию gcc установленный и готовит среду сборки. makefile одна из самых важных вещей, сгенерированных от выполнения ./configure поскольку это направляет сборку когда make выполняется. GNU делает детали руководства процессом в большой глубине. В сумме, правилах в makefile определите главную цель (для создания исполняемого файла) так, чтобы исходный код .c файлы будут превращены в скомпилированные файлы (.o файлы) для генерации целевого исполняемого файла.

Ресурсы

Два больших ресурса являются этими руководствами по компиляции Ubuntu здесь и здесь, которые содержат некоторый большой совет и информацию для плохо знакомых с компиляцией. Другие ресурсы, такие как GNU gcc руководство и make руководство я уже упомянул. Для получения дополнительной информации о C и создании простой небольшой программы C, см. главу 22 Руте и главу 24 Командной строки Linux.

12
ответ дан 21 October 2019 в 13:06

Для компиляции программ Bash в двоичные файлы (я предполагаю, что Вы спрашиваете о Bash, потому что Ваш вопрос отмечен удар), необходимо использовать программу Shc. Можно загрузить его от здесь . После распаковки архива скомпилируйте и установите shc с cd shc-3.8.9;make;sudo make install. Теперь, выполненный shc -f filename, где имя файла является путем к файлу, Вы хотите превратить в нечитаемый формат кода. Shc создаст два файла: filename.x.c и filename.x. Можно избавиться от filename.x.c, имя файла является нечитаемым файлом.

1
ответ дан 21 October 2019 в 13:06

Одна Опция : Если Вы хотите видеть то, что находится в скомпилированном употреблении программ инструмент как objdump для разгрузки объектного кода, например:

objdump -d /bin/ls | less
1
ответ дан 21 October 2019 в 13:06

Существует 10 различных видов людей. Угадайте, что Вы принадлежите второй группе... :P

существуют только двоичные файлы в каталоге bin (Двоичные файлы = Programms в Двоичном коде, всего 1, и 0)

Они компилируются для машины. Машины знают 1 и 0 или на и прочь, TRUE или FALSE, ничто иное.

Это сделано компилятором. Существует больше чем один компилятор. Я могу думать о компиляторе Gnucc, или Компиляторе Java или Компиляторе Delphi... Различные компиляторы для различных языков программирования.

Попытка grep.Удачи!

0
ответ дан 21 October 2019 в 13:06

Другие вопросы по тегам:

Похожие вопросы: