Я заметил, что компилируется большинство моих команд/программ в / каталоге bin. Я хочу копировать этот нечитаемый формат кода сам. Кто-то может сказать мне, почему и/или как эти программы получают этот путь?
[зеленая премия штампа]: Нет ли команда удара для печати всего "человекочитаемого" текста из файла?
Команды/программы в /bin
не нечитаемы , но они, как Вы говорите, скомпилированный. Это означает, что они были первоначально записаны в C (или некоторый другой язык программирования) и были скомпилированы в машинный код (двоичный файл), таким образом, процессор может выполнить код. Чтобы сделать то же, просто запишите программу, в которой Вы нуждаетесь в C и выполняете эти gcc
команда для создания исполняемого файла.
Для печати любого читаемого пользователем текста в использовании файлов strings < /bin/file
,
Введение
Когда программа компилируется от, говорят что 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.
Для компиляции программ 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, имя файла является нечитаемым файлом.
Одна Опция : Если Вы хотите видеть то, что находится в скомпилированном употреблении программ инструмент как objdump для разгрузки объектного кода, например:
objdump -d /bin/ls | less
Существует 10 различных видов людей. Угадайте, что Вы принадлежите второй группе... :P
существуют только двоичные файлы в каталоге bin (Двоичные файлы = Programms в Двоичном коде, всего 1, и 0)
Они компилируются для машины. Машины знают 1 и 0 или на и прочь, TRUE или FALSE, ничто иное.
Это сделано компилятором. Существует больше чем один компилятор. Я могу думать о компиляторе Gnucc, или Компиляторе Java или Компиляторе Delphi... Различные компиляторы для различных языков программирования.
Попытка grep.Удачи!