Почему лучше компилировать, чем устанавливать из репозиториев

В этом небольшом руководстве я собираюсь объяснить (и научить вас), почему лучше скомпилировать программу (скажем, Firefox, Vlc и т. Д.) Из ее исходного кода, чем загружать ее (из Центра программного обеспечения, Yumex, Pacman и т. Д.) ) и установите.

Сначала рассмотрим теорию:

Что такое "компилировать"?

Компиляция - это преобразование исходного кода (кода, написанного на определенном языке программирования, например C, C ++ и т. Д.) В исполняемую программу для его работы с использованием процессора для преобразования языка, используемого для генерации кода, в двоичный и ассемблерный. Его также часто называют упаковкой.

Почему лучше "компилировать"?

Сначала вы должны знать следующее, чтобы понять, почему. Говоря «грубо» (просто, не очень профессионально и т. Д.), Каждая раса (Pentium, Core, Atom и т. Д.) И ее разновидности (Intel, AMD, ARM и т. Д.) Имеют инструкции (программное обеспечение, написанное на ассемблере). который обрабатывает код) своей модели (Core i7, Core i5, Atom x2, Phantom x8, Arm и т. д.), а также имеют общие инструкции, которые есть у всех подобных.

Когда вы загружаете программу из репозиториев через Центр программного обеспечения (например, apt-get/Yumex/Yum/Pacman/и т. д.), она автоматически устанавливается и считается предварительно скомпилированной для работы на всех возможных процессорах (Intel и AMD). Поскольку это предварительно скомпилированная программа, она теряет инструкции, специфичные для конкретной модели процессора (представьте, если бы программа, такая как Firefox или Chrome, содержащая более 7 или 8 миллионов строк кода, должна была бы включать все специфические инструкции для каждого процессора на рынке; объем кода был бы настолько велик, что программа перестала бы быть эффективной), сохраняя только общие инструкции своего создателя (Intel, AMD, ARM).

Когда вы самостоятельно скачиваете, распаковываете и компилируете исходный код программы, он компилируется с учетом специфических инструкций ВАШЕГО процессора ( это не означает, что он не будет работать на компьютере с другим процессором, а лишь то, что он будет оптимизирован специально и исключительно для вашего процессора) , тем самым высвобождая и освобождая всю мощь, на которую способен ваш процессор благодаря своим специфическим инструкциям.

В более технических деталях эти конкретные инструкции тесно связаны с так называемым набором микросхем вашей материнской платы, что является большой головной болью для тех из нас, у кого есть Intel, когда мы хотим обновить процессор и материнскую плату.

Вы удивитесь мощности процессоров AMD Atom x2 , Intel Core i3 , Core 2 Duo или других, которые есть в вашем старом ПК . Теперь вы понимаете, почему компиляция знаменитого ядра (сердца любой операционной системы) так популярна в мире Linux? Представьте, если бы вы могли скомпилировать целую систему специально для своего ПК (графическую среду (GNOME, KDE и т. д.), ядро, часто используемые программы (Firefox, VLC, Chrome, Wine и т. д.)) — какой уровень скорости и оптимизации вы бы получили.

Этот принцип компиляции для получения кода, оптимизированного специально для вашей машины, используется такими дистрибутивами, как Gentoo и производные (о котором я не собираюсь сейчас говорить, я использую Fedora Minimal с компиляцией Gnome 3, ядра и других программ), где система , ваши обновления и ваши программы всегда компилируются.

Минусы компиляции:

Я уже объяснил все преимущества, но, как и все во вселенной, у этого есть один против.

В случае компиляции они есть;

  • Время, необходимое для этого (Firefox с i7 4790K (без разгона, так как я очень плохо разбираюсь с напряжениями), занимает 3 минуты, Gnome Shell (панель не более) с Gnome-Control-Center заняла у меня около 2 минут, оба компилируются в то же время в Fedora, но на машине с менее мощным процессором это время может быть непропорционально большим).
  • Процессор использует 100% своей мощности со всеми ядрами на максимум, поэтому потребление и тепло резко возрастают (учтите это, если у вас разгон или это особенно ноутбук), поэтому вам удобно подготовить помощника или кофе по случаю.
  • Возможно, вам не хватает библиотеки (инструмента), в которой используется программа, поэтому при компиляции не возникает ошибок. В общем, все дистрибутивы имеют пакеты или наборы, чтобы избежать этого (они поставляются с различными библиотеками и другими вещами, которые позволяют ядру как следует взаимодействовать с процессором во время процесса).

Как я могу скомпилировать?

Для Debian (Ubuntu, Mint, Elementary и т. Д. Все они являются производными от этого, следуйте этому

Здесь я говорю о компиляции программы для нормального использования, а не ядра.

aptitude install build-essential dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep ardor

Я поставил debian-policy, но если ваш дистрибутив не является Debian и выдает ошибку о том, что такого пакета не существует, просто проигнорируйте его. Я должен уточнить, что я давно не использую эти системы, поэтому, если пакета больше нет в репозиториях, не создавайте проблем.

Для Fedora:

sudo yum -y установить заголовки ядра
ядро-разработка
sudo yum groupinstall "Инструменты разработки"
sudo yum groupinstall "Библиотеки разработки"

Здесь я должен извиниться за тех, кто использует Arch (я плохо знаю дистрибутив) и OpenSuse, так как я не знаю эти дистрибутивы или соответствующие пакеты для правильной компиляции (и я не подтвердил, что находится в сети, поэтому что для этих двоих я не знаю, работают ли они).

Теперь, когда у вас есть все необходимые требования, вам нужно только загрузить исходный код программы, которую вы хотите скомпилировать, в зависимости от расширения, которое вы распаковываете с помощью терминала (не беспокойтесь, я оставлю вам команды), и когда вы переходите в папку (всегда с терминалом), вы делаете то же самое следующий:

Если у вас есть возможность настроить себя, чтобы выбрать компоненты и другие:

./configure

Затем вы набираете:

make

И, наконец, чтобы установить программу на свой Linux:

make install

Все это всегда с root (su в Fedora, sudo su в Ubuntu и его производных (Mint, Elementary Os и т. Д.)

Команды для распаковки с помощью терминала (файл распаковывается в папку, в которой находится файл):

.Tar файлы (tar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Пакет | tar cvf file.tar / file / * Распаковать | tar xvf file.tar Просмотреть содержимое | tar tvf file.tar
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.gz - .tar.z - .tgz (tar с gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Пакет и молния | tar czvf archive.tar.gz / archive / Распаковать и разархивировать | tar xzvf file.tar.gz Просмотреть содержимое (не извлечено) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | gzip -q file (файл сжимается и переименовывает его в "file.gz") Распаковать | gzip -d file.gz (файл распаковывает его и оставляет как "файл" Примечание: gzip сжимает только файлы, а не каталоги
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | bzip2 файл | bunzip2 (файл сжимается и переименовывается в "file.bz2") Распаковать | bzip2 -d file.bz2 | bunzip2 file.bz2 (файл распаковывает его и оставляет как «файл») Примечание: bzip2 сжимает только файлы, а не каталоги.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (tar с bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | tar -c файлы | bzip2> file.tar.bz2 Распаковать | bzip2 -dc file.tar.bz2 | tar -xv | tar jvxf file.tar.bz2 (последние версии tar) Просмотреть содержимое | bzip2 -dc file.tar.bz2 | tar -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | zip file.zip / mayo / archives Распаковать | unzip file.zip Просмотреть содержимое | распаковать -v file.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Сжать | rar -a file.rar / may / archives Распаковать | rar -x file.rar Просмотреть содержимое | rar -v file.rar | rar -l file.rar

И это все. Привет из Буэнос-Айреса, Аргентина. С праздником и Новым годом! :).


Добавить в качестве предпочтительного источника в Google