Я хочу получить подробную информацию о бинарном пакете и запустить их на Linux. Я использую базу Debian (Ubuntu / Linux Mint) Linux OS.
- Как собрать бинарный пакет из исходного кода? А можно ли напрямую загрузить бинарный пакет для приложений (например, Firefox и т. Д.) И игр (например, BosWars и т. Д.)?
- Я запускаю какой-то прямой пакет в формате "xyz.linux.run". Что это за пакет? Являются ли они независимыми от зависимостей? или это предварительно собранные бинарные пакеты?
- Как собрать их, которые могут быть запущены в операционной системе Linux, напрямую "xyz.linux.run" в Linux.
- В чем разница между бинарным пакетом и пакетом deb?
Ответы:
В строгом смысле бинарный файл - это файл, который не является символьно закодированным как читаемый человеком текст. Говоря более разговорно, «двоичный» относится к файлу, который является скомпилированным исполняемым кодом, хотя сам файл может быть не исполняемым (ссылаясь не столько на разрешения, сколько на возможность запуска в одиночку; некоторые файлы двоичного кода, такие как библиотеки, являются скомпилированы, но независимо от разрешений, они не могут быть выполнены сами по себе). Двоичный файл, который запускается как отдельный исполняемый файл, является «исполняемым», хотя не все исполняемые файлы являются двоичными файлами (и это касается разрешений: исполняемые текстовые файлы, которые вызывают интерпретатор через шебанг, такие как
#!/bin/sh
также исполняемые файлы).Бинарный пакет в контексте Linux - это пакет приложения, который содержит (предварительно созданные) исполняемые файлы, а не исходный код.
Обратите внимание, что это не означает, что файл пакета сам по себе является исполняемым файлом. Файл пакета - это архив (вроде как a
.zip
), который содержит другие файлы, а «двоичный» файл пакета - это тот, который конкретно содержит исполняемые файлы (хотя, опять же, исполняемые файлы не обязательно являются действительно двоичными файлами, и фактически двоичные пакеты могут использоваться для скомпилированные библиотеки, которые являются двоичным кодом, но не исполняемыми файлами). Однако для доступа к этим файлам пакет должен быть распакован.Обычно об этом заботится система управления пакетами (например, apt / dpkg), которая загружает пакет, распаковывает и устанавливает двоичные файлы внутри вас.
Нет,
.deb
пакеты - это бинарные пакеты, хотя есть.deb
s, которые содержат исходные тексты, обычно они-src
добавляются к их имени.Как правило, это самораспаковывающиеся двоичные пакеты; они работают, встраивая двоичную полезную нагрузку в сценарий оболочки. «Самораспаковывающийся» означает, что вам не нужно вызывать другое приложение (например, менеджер пакетов), чтобы распаковать и использовать их. Тем не менее, поскольку они не работают с менеджером пакетов, разрешение их зависимостей может быть не совсем удачным, и, следовательно, некоторые такие пакеты используют статически связанные исполняемые файлы (в них есть все необходимые библиотеки, встроенные в них), что приводит к потере памяти при использовании. ,
источник
Поскольку на остальную часть вашего вопроса ответили златовласка, в первой части я расскажу, как строить вещи из исходного кода.
Действительно короткая версия заключается в том, что когда вы загружаете исходные файлы из Интернета, с ними обычно ассоциируется файл readme, который должен точно сказать вам, как запустить и запустить программу.
Но сказать вам, что вы читаете readme, на самом деле не отвечает на этот вопрос, поэтому в простом смысле вы можете написать очень простую программу, которая
и введите
gcc helloWorld.c
иgcc
создаст этот двоичный файл и выведет программу, которая пишет "Hello World!" в консоль при запуске.Итак, теперь вы создали программу, однако разве не было бы неприятно вводить каждый исходный файл, который вы хотите компилировать каждый раз, когда вам нужно что-то скомпилировать? Вот для чего
makefiles
. Если вы натыкаетесь программу , которая имеет кучу исходных файлов он обычно приходят с Makefile или какой - либо другой файл автоматизации сборки (ant
,Cmake
или ,autoconf
или что - то).Чтобы создать программы такого типа, просто запустите
make <build target>
внутри каталога. Makefile для моей программы hello world может включать в себя цель под названием,helloworld
которая просто компилирует helloWorld.c. Я бы запустил это,make helloworld
и он вывел бы двоичный файл.Обратите внимание, что создание объектов из исходного кода может занять очень много времени и большого объема памяти ( команда Chromium даже рекомендует использовать второй жесткий диск для создания своего источника! ). Также обратите внимание, что когда вы создаете вещи из исходного кода, вам придется иметь дело с зависимостями, а не с менеджером пакетов, делающим это за вас.
источник