Gentoo: Почему я решил компилировать собственные программы?

Что ж, учитывая большой прием моего предыдущего поста, я пришел, чтобы рассказать вам немного больше о моем любимом дистрибутиве, Gentoo Linux. Обещаю, что в этом посте будет занимательная информация, которая поможет вам немного разобраться в мифах, которые возникают перед устрашающими сборник программного обеспечения. Я также обещаю, что эта информация будет полезна для следующего руководства по установке Gentoo Linux в ~ 20 этапах (я еще не посчитал их хорошо, но я думаю, что их еще меньше). Без лишних слов начнем:

Что компилирует?

Это процесс, выполняемый программой (обычно называемой компилятором) для преобразования кода, написанного на человеческом языке (файлы C, C ++ и т. Д.), В код, который может быть понят машиной (двоичный код). Давайте посмотрим на следующий пример:

Собственный дизайн, Кристофер Диас Риверос

Это наша небольшая программа на C (если вы захотите позже другие учебники по C, я также буду рад показать вам то немногое, что я узнал за это время). Теперь посмотрим, как будет выглядеть результат после компиляции.

Собственный дизайн, Кристофер Диас Риверос

Красиво, правда? 🙂 Это то, что наша машина понимает, чтобы иметь возможность писать это маленькое «Привет» в нашем терминале каждый раз при выполнении программы.

Процесс сборки:

Поскольку бесполезно иметь программу, которая выводит на экран простое «Hello», в проектах много файлов .c и .h (как и во всех языках программирования). Чтобы немного упростить процесс компиляции, появились новые инструменты, наиболее представительной из которых является команда сделать.

Make взять файл Makefile в качестве отправной точки и компилирует то, что необходимо для создания окончательного исполняемого файла, в некоторых случаях этот шаг требует выполнения файла с именем configure чтобы иметь возможность назначить несколько переменных, необходимых компилятору для компиляции (простите за избыточность) полезного файла.

Вот почему во многих уроках мы найдем следующие шаги:

Своя. Кристофер Диас Риверос

Магия ./configure:

Чтобы показать вам один из самых скрытых и занимательных секретов исходного кода, мы перейдем к исходному коду программы, которую все мы прекрасно знаем, Sudo. Сначала обычные шаги, но я остановлюсь на . / Настроить  показать им что-то особенное.

Своя. Кристофер Диас Риверос

Это вернет длинный список вариантов, среди которых я покажу вам тот, который больше всего привлекает мое внимание.

Своя. Кристофер Диас Риверос

--with-insults... как следует из названия, компилирует sudo с злоупотребление 😀 - это забавная функция, которая позволяет отправлять пользователю оскорбление каждый раз, когда он ошибается в своем пароле. Для чего это? Что ж, не так давно 😛 но это проясняет мысль. Есть тысячи опций, которые не входят в большинство дистрибутивов по умолчанию.

Как и вы, есть много других, которые могут быть активны в дистрибутивах двоичного кода и которые вы никогда не будете использовать, или будут некоторые из них, которые вам понадобятся, но они не будут поставляться с вашим официальным распространяемым двоичным кодом, что означает, что каждое обновление будет руководство.

Получите удовольствие от Gentoo:

Мы уже видели, сколько опций мы можем упустить или перетащить с предварительно скомпилированными программами. Но теперь давайте немного сосредоточимся на предварительно скомпилированной задаче.

Производительность:

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

Возьмем очень практический пример.

Мои программы скомпилированы с опцией --march=broadwell... это потому, что мой процессор Broadwell (Intel i7). Обратная сторона этого? ни один процессор до Broadwell не мог распознать этот двоичный файл. На этом этапе вы должны это увидеть очень ясно, если я компилирую -Марш  в частности, все вышеперечисленное не будет работать ... так как же двоичные пакеты поддерживают такое количество типов оборудования? Легко, они компилируются с наименьшим возможным вариантом 🙂 это гарантирует, что все типы оборудования смогут его прочитать (по крайней мере, для совместимости).

Настоящая проблема ... если вы используете программы, скомпилированные для i3 ... Вся мощность вашего i7 (или его соответствующих аналогов AMD) тратится впустую !! Разве это не печально? 🙁

гибкость:

Поскольку разработчики Gentoo очень умны, весь этот процесс tar, ./configure, make и т. Д. Был заменен мощью Волок. Все эти любопытные настройки были переименованы в USE-флаги, поэтому, если вам нужна конкретная настройка, вам не нужно вводить исходный код, просто установите переменную. Вот пример того, как это сделать с помощью sudo в portage. Сначала мы увидим, какие параметры у нас есть в нашей текущей конфигурации с Equery.

Своя. Кристофер Диас Риверос

Как мы видим, красные опции активированы, синие нет, ну… каждый может прочитать легенду 🙂

допустим, я хочу добавить опцию ...

Своя. Кристофер Диас Риверос

Так же просто, как добавить строку в файл с именем Sudo (имя ссылочное) в пределах /etc/portage/package.use/. При этом в следующий раз, когда мы установим sudo, он сообщит нам, что он будет перекомпилирован с включенной опцией.

Своя. Кристофер Диас Риверос

Если мы дадим, ДА, все, что вам нужно сделать, это немного подождать и вуаля так просто.

Последние мысли:

Что ж, мы уже видели, насколько легко в Gentoo обрабатывать дополнительные функции, которые позволяют нам добавлять, удалять или изменять параметры в наших любимых программах. Мы также видели, как производительность наших программ во многом зависит от переменных, с которыми мы их компилируем. Если у вас совсем новая машина, Gentoo - ваш лучший вариант. Если у вас очень старая машина, Gentoo также является вашим вариантом (хотя компиляция занимает некоторое время, окончательные программы будут намного легче).

Вскоре я напишу руководство по установке Gentoo как для любителей SystemD, так и для искателей приключений OpenRC (я использую systemd с GNOME). Кстати, еще одно большое преимущество Gentoo - это возможность выбирать все внутри вашей системы, и когда я говорю, что все TODO.

Если вы пропустили мой первый пост, вот ссылка:

Gentoo Linux: история путешествия

С уважением,


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

24 комментариев, оставьте свой

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Mart сказал

    Большой! Я буду ждать руководства по установке Gentoo с Gnome. Может быть, мне будет рекомендовано перейти на Gentoo, даже если у меня все еще есть немного устаревший ПК (Intel Core i5 3-го поколения). Ура!

    1.    христианин сказал

      Вскоре Март Гано убедил меня поделиться чем-то большим, поэтому я написал еще один пост, который ждет публикации, но очень скоро 🙂 Обещаю

  2.   Njord сказал

    Думаю, я начну видеть здесь много сообщений о моем любимом дистрибутиве Linux. o!!
    Я работаю в Gentoo с 2005 года, где я использовал его для настройки почтового сервера в университете, где я учился (и где я сейчас работаю), и хотя я страдал от спорадических атак с использованием дистрибутива, я всегда возвращался с моим дорогим Гертрудисом (сначала с Gnome2, затем Xfce и теперь openbox), и, как вы упомянули в своем предыдущем посте, с повышением навыков и знаний для тонкой настройки 😉
    Я буду ждать ваших следующих вкладов, поздравлений и благодарностей за то, что сделали мой день = D!

    1.    христианин сказал

      Что ж, выходит следующий 🙂 это как увлекательный разговор на мою любимую тему, скоро будет следующая, и следующая, и следующая 😛 Приветствую и большое спасибо за ваш комментарий 🙂

  3.   Виктор сказал

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

    1.    христианин сказал

      Что ж, справочник - это информационный рай, там есть просто все 🙂 Я могу только поделиться своей маленькой песчинкой 🙂 но очень скоро выйдет следующий пост, и скоро (я вижу, что это вполне ожидаемо) ~ Руководство по установке 20 шагов. Привет,

      1.    Виктор сказал

        Какой джентльмен, вы не дали мне с самого начала рассказать о различных микропроцессорах, и руководство здесь !!!!! Этот конец меня испортил ПЕРВЫМ! !!! Миллионы благодарностей !!!!

  4.   соевый сказал

    Knoppix, Mandrake, Ubuntu и Debian ... И всегда думаю о Gentoo ...

    Жду тех 20 шагов!

    1.    христианин сказал

      Хахаха, это похоже на сон, не так ли? 🙂 Я говорю, что пора сделать это 😉 привет

  5.   Круто, как лед сказал

    Привет, ChrisADR, сначала я хочу сказать вам, что я плохо спал после вашей первой статьи о Gentoo, и это связано с этой новой статьей, мои мечты основаны на компиляции Gentoo на моем старом нетбуке Aspire One. Во сне система сообщает мне, что мой нетбук очень старый и не распознает оборудование.
    С другой стороны, как только я увидел Gentoo и привлек мое внимание, они упомянули мощность, которую он предоставляет компьютеру (компьютеру). С того дня я сказал себе, что однажды я его установлю, прошло более 10 лет, а я этого не делал, возможно потому, что они сказали мне, что это очень сложно установить, в то время я был почти анти-Linux поэтому они усилили мое недовольство этим. Однако любопытство продолжалось. Однажды я безуспешно пытался установить BSD на свой нетбук, и мне сказали, что Gentoo очень похож на BSD Linux.
    Что вы посоветуете мне установить Gentoo на мой старый Aspire One со старым компилятором Atom?

    и большое спасибо за ваши статьи, я жду еще

    1.    ChrisADR сказал

      Что ж, рекомендую… СДЕЛАЙТЕ ЭТО! И, наконец, если в конце концов он выйдет из строя (в чем я очень сомневаюсь, потому что ядро ​​создано для поддержки всех видов оборудования), у вас будет чрезвычайно полезный опыт в мире Linux 🙂 вы скомпилируете свое ядро, у вас будет смонтировал свою файловую систему с нуля, вы будете делать конфигурации, которые мало кто делает в своей жизни 🙂 это даст вам новый взгляд на мир хахаха Если вы не видите мой профиль Unix и StackExchange 🙂 мои ответы охватывают широкий спектр Linux потому что знание Gentoo позволило мне многое узнать обо всем Linux 😉 Я оставляю вам ссылку на мой профиль здесь

      https://unix.stackexchange.com/users/246185/christopher-d%C3%ADaz-riveros?tab=profile

      Не бойтесь, и в конце концов, если все пойдет хорошо (это наверняка будет стоить немного), это будет достижением для вашей книги 😉 Приветствую

  6.   Стивен сказал

    Я тоже подумываю о переходе на Gentoo, но у меня есть некоторые сомнения. Прежде всего, насколько актуальны пакеты для Arch? С другой стороны, в моем ноутбуке есть встроенная батарея, и все мы знаем, что постоянный чрезмерный нагрев влияет на батареи. И поскольку я тратил много времени на компиляцию ...

    1.    ChrisADR сказал

      Что ж, правда не может сказать вам наверняка, какой из них более подвижный 😛 то, что я могу сказать с уверенностью, так это то, что Gentoo имеет две ветви: «стабильную» и «нестабильную», хотя «нестабильная» должна иметь Большинство пакетов находятся на переднем крае технологий, у меня есть много известных разработчиков, которые используют его в своей повседневной жизни без проблем. Многие из них созданы для работы с репозиториями проекта git, поэтому нет ничего более актуального 🙂 Я лично использую «стабильную» ветку, но это особенно из-за моей работы в сообществе в качестве координатора безопасности и в качестве члена команда тестирования (Arch Tester). Если бы вам не требовалась «стабильная» версия для этой работы, вы наверняка оказались бы на переднем крае технологий с «нестабильной».
      Я не знаю, отвечает ли он на ваш вопрос, но, по крайней мере, я надеюсь, что он привлечет ваше внимание достаточно, чтобы попробовать 😛 С уважением

  7.   Свободный Дон Кихот сказал

    Правда в том, что ты заставляешь меня хотеть 😉
    Мне очень интересно, что вы указали об учебных курсах по C, а также о Python, и я был бы признателен, если бы у вас был какой-нибудь скрытый камень для неуклюжих бабушек и дедушек.
    За то, что наложил на вас палки, и при всем моем уважении, поскольку я считаю, что содержание важнее, чем континент, но как я немного привередлив с языком, скажу вам небольшую вещь.
    Вы говорите в начале:
    «Компиляция - это процесс, который выполняет компилятор для использования кода, написанного на человеческом языке, и преобразования его в код, понятный для машины».
    На мой взгляд, неправильно включать то, что определено в определение, поскольку для определения компиляции вы включаете термин компилятор, поэтому правильнее было бы что-то вроде этого:
    Компиляция - это процесс, с помощью которого программа получает из текстового файла, написанного на языке (C, C ++), исполняемый файл с помощью компьютера.

    1.    ChrisADR сказал

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

  8.   Двойной D сказал

    Я использую ubuntu 16.04, как вы думаете, мне следует перейти на gentoo? В чем будут преимущества gentoo по сравнению с ubuntu?

    1.    ChrisADR сказал

      Ну, я действительно не знаю 😛 это зависит от того, что вы собираетесь делать со своим оборудованием, или от оборудования, которое у вас есть, или от того, есть ли у вас время (и желание) научиться использовать Gentoo. Я бы сказал вам, что если у вас есть время и вы чувствуете его желание, вы можете ДВИГАТЬСЯ! и вы увидите, что по пути многому научитесь 😉
      привет

  9.   Фернан сказал

    Привет
    Если правда в том, что gentoo есть что прочитать, например, вы создаете пакет emerge -pv и получаете использование красного, синего и зеленого цветов, плюс возможные блокировки, требующие изменения использования, демаскирующие пакеты, смена слотов сильно отличается от что отображается другими менеджерами пакетов.
    Полагаю, что gentoo придется обновлять каждый день, если вы оставите его на 1 месяц, пора будет разобраться, как это исправить.
    Привет.

    1.    ChrisADR сказал

      Да, хе-хе, сначала это немного изменится 🙂 но со временем вы станете знакомым и даже поймете, почему ни в одном другом диспетчере пакетов у вас нет такой гибкости 🙂 с точки зрения времени, я знаю людей, у которых есть такие же Сервер работает годами без обновлений и остается полностью стабильным, как и в первый день, а для тех, кто работает там годами (а не месяцами), есть специальный раздел вики, описывающий возможные решения проблемы:

      https://wiki.gentoo.org/wiki/Upgrading_Gentoo/es#Actualizar_sistemas_antiguos

      Что касается обновлений, возможно, непосредственное наблюдение за проблемами безопасности заставило меня взглянуть на это с новой точки зрения, но ежедневное обновление - это то, что должно выполняться независимо от дистрибутива, обычно для этого не требуется более двух команд во всех дистрибутивах, а в gentoo Помимо создания хорошей привычки, избегайте долгих ожиданий, когда все пакеты соберутся.
      привет

  10.   Фернан сказал

    Привет
    В бинарных дистрибутивах я использую manjaro, и до того, как я использовал ubuntu, его легко обновлять, я проверяю каждый день, есть ли обновления, это первое, на что я смотрю, но в обновлении manjaro у меня не возникло проблем, обычно я скажите pacman, что да для всего и самое большее, что нужно обновить подписи или даже удалить файл. Но из того, что я прочитал в gentoo, иногда трудно понять, что говорит portage.
    Привет.

    1.    ChrisADR сказал

      Скажите «да» всему, что Fernan никогда не бывает хорошим 🙂 если вы достигли GNU / Linux, вы должны это знать и понимать. Ну, ничего не видно, это просто обычай, со временем понимаешь, что красный - это то, что у тебя есть, синий - то, чего нет, зеленый - то, что ты собираешься добавить, и все :). Мне никогда не нужно ничего менять для обновления, если я правильно настроил для запуска, иногда я добавляю или удаляю USE-флаги, но обычно я даю Y или да после прочтения списка, чтобы знать, что делается 🙂
      PS: pacman -Syy - это то же самое, что и emerge -sync
      Pacman -Suy - это то же самое, что и emerge -uD @world (-av используется только для того, чтобы быть подробным и спрашивать вас, прежде чем продолжить, в этом нет необходимости, если вы знаете свою команду и знаете, что делаете, но я сказал это, чтобы избежать проблем позже 😉) Не думаю, что это так сложно вспомнить 🙂

      привет

  11.   Маурисио Лопес сказал

    Превосходно ваши статьи, как предыдущие, так и эта. Я сомневаюсь, насколько быстро вы набираете скорость между Arch или Manjaro и Gentoo. Независимо от настроек и обучения как таковых, они оправдывают установку.
    Другой вопрос, который у меня есть, - как работать с драйверами, это то, что доставляло мне проблемы в Arch.

    1.    ChrisADR сказал

      Привет Маурисио,
      Ну, я никогда не останавливался, чтобы сравнить эти два, и на самом деле это очень неоднозначный вопрос, в зависимости от программного обеспечения, которое вы используете, и оборудования, которое у вас есть, это может варьироваться от небольшого или нулевого до большого. По крайней мере, на сегодняшний день обе системы у меня работают достаточно хорошо в том, что мне нужно для их использования. (У меня есть основной Gentoo и Arch, которые я использую время от времени) Обычно я использую его при виртуализации и редактировании программ (но обычно через терминал, поэтому он не использует много памяти в IDE. Chrome поддерживает меня совершенно спокойно более 40 вкладок (я пробовал это время от времени, хотя обычно у меня не более 5 открытых в течение длительного периода времени.
      Если однажды вы осмелитесь попробовать, расскажите мне, как все прошло

      Что касается драйверов, поскольку вы управляете ядром по своему желанию, обычно большинство «общих» драйверов можно установить или, по крайней мере, управлять. В случае узкоспециализированного оборудования (особенно мало совместимого с Linux в целом), я полагаю, это та же работа, что и во многих других дистрибутивах, у меня нет особого специализированного оборудования, поэтому я не могу много его комментировать 🙂

      Привет и удачи

  12.   Жанпье Суберо сказал

    какие у вас социальные сети ChirsADR?