Защо е по-добре да се компилира, отколкото да се инсталира от хранилищата

В това малко ръководство ще обясня (и ще ви науча) защо е по-добре да компилирате програма (да речем 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).

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

В по-технически подробности тези конкретни инструкции са тясно свързани с това, което е известно като чипсет на вашата дънна платка, което е голямото главоболие за тези от нас, които имат Intel, когато искаме да надстроим процесора и дънната платка.

Ще бъдете изненадани от силата, която вашата amd atom x2 или ти Intel Core отвътре, Основна 2 Duo, i3, и т.н. от вашия стар компютър. Сега разбирате ли защо в света на 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 инсталиране на съществени 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 (катран с gzip ) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Опаковка и цип | tar czvf file.tar.gz / file / Разопаковайте и разархивирайте | tar xzvf file.tar.gz Преглед на съдържанието (не е извлечено) | tar tzvf file.tar.gz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .gz (gzip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | gzip -q файл (Файлът го компресира и преименува на "file.gz") Разархивирайте | gzip -d file.gz (Файлът го разархивира и оставя като "файл" Забележка: gzip компресира само файлове, но не и директории
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .bz2 (bzip2) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | bzip2 файл | bunzip2 файл (Файлът го компресира и преименува на "file.bz2") Разархивирайте | bzip2 -d файл.bz2 | bunzip2 file.bz2 (Файлът го разархивира и оставя като „файл“) Забележка: bzip2 компресира само файлове, но не и директории
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .tar.bz2 (катран с 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 | катран -tv
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .zip (zip) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | zip file.zip / mayo / archives Разархивирайте | unzip file.zip Вижте съдържанието | разархивирайте -v файл.zip
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - .rar (rar) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Компресиране | rar -a file.rar / май / архиви Разархивирайте | rar -x file.rar Вижте съдържанието | rar -v файл.rar | rar -l файл.rar

И това е всичко. Поздрави от Буенос Айрес, Аржентина. Весели празници и Нова година! :).


67 коментара, оставете своя

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

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

  1.   Гонсало каза той

    Проблемът при компилирането е, че не винаги работи за първи път и е по-досаден

    1.    Cristian каза той

      Проблемът с компилирането е, че освен ако нямате стар и ограничен компютър, подобренията няма да бъдат забележими ... е, може би на компютър с интензивна употреба това е опция, но за повечето потребители това е просто досаден процес.

      1.    Daniel каза той

        Мисля, че това е сърцевината на въпроса. Толкова ли е важно подобряването на производителността, което ще се забележи при съставянето на пакетите, че ще отнеме времето и неприятностите на тази задача на заден план?

      2.    жоако каза той

        Същото, ако имате i7 компилация е удобно, защото е по-бързо и изчислявам, че работи нещо по-добре. Сега с компютър с Intel atom не е удобно, освен ако наистина не ви е необходима тази допълнителна мощност, която компилирането дава, но може да отнеме часове, за да компилирате програма с по-малко мощен процесор.

    2.    Аврах каза той

      Напълно съм съгласен, случвало ми се е да компилирам и след известно време да разбера, че ви липсва библиотека, проследявате я и трябва да се изправите отново пред процеса ... Рядко всичко работи при първия опит ... xD

  2.   FerGe каза той

    ¡Muy interesante!

    Ако компилирате програма, как работят актуализациите след това? Автоматични ли са или трябва да сме наясно дали е излязла нова версия?

    1.    Антонио Кампос каза той

      Трябва да го актуализирате ръчно, тоест компилиране на най-новата версия, което е друг, да кажем „недостатък“, за който също прави нещо досадно

    2.    jlbaena каза той

      Тъй като актуализациите не съществуват, всъщност дистрибуциите на Linux и различните им начини за опаковане на софтуера и съответните мениджъри на пакети премахват неудобството от прекомпилирането за всяка нова актуализация (и решаването на зависимости).

      Поздрави.

    3.    жоако каза той

      Ако го компилирате, като изтеглите изходния код от която и да е страница, тогава трябва да го направите ръчно и да научите как да го инсталирате, тъй като не всички са инсталирани еднакво.
      Сега, ако имате Gentoo или някакъв дистрибутор с портове, тогава го правите от хранилищата почти автоматично.

    4.    Фермин каза той

      В Gentoo вашият мениджър на пакети, Portage, се грижи за актуализации и зависимости; Не знам за други дистрибуции. Разбира се, всяка актуализация очевидно включва прекомпилиране.

  3.   Танракс каза той

    Имаше време, когато събирах всичко, което можех. Тогава се уморих, особено поради времето, което трябваше да отделя на работещата машина (45 минути за ядрото, 10 минути за хрома ...) и поради времето, което отделих за отстраняване на проблеми, възникнали в движение. Освен това аз лично не открих увеличение на представянето, имах чувството, че всичко е същото. Поради тези причини сега използвам всичко предварително компилирано, всичко е мигновено и без конфликти. Въпреки че научих много по това време, исках да използвам gentoo 🙂

  4.   Емануел каза той

    Дори и това е нещо, което не съм виждал много, може да се компилира от системи като apt. Добавете флаг за изграждане към apt-source и voila. Разбира се, преди това, инсталирането на необходимите пакети за извършване на компилациите, ако не не работи ... въпреки че това е по-пряка форма на компилация и това включва по-малко стъпки, тъй като само първият път, когато е необходимо до инсталирането на пакети и следното, изпълнените зависимости и пакета като такъв.

    Поздрави.

    1.    жоако каза той

      Той има функционалност apt-build, въпреки че мисля, че не компилира зависимостите, а инсталира предварително компилирани двоични файлове.

  5.   ксикуфранческ каза той

    От първия момент, в който видях заглавието, не можах да не помисля същото и след като прочетох цялата отлична статия, имам предвид идеята, обикаляйки хиляди пъти, Gentoo ... Gentoo, къде си?
    компилирането е прекрасно, възможността да се наслаждавате на определени функции и да ги използвате е безценно, но времето и "текущите нужди" са непростими, тъй като не се прилагат
    Може би се нуждаем от нещо в средата, където нито библиотеките, нито детайлите при промяна на версията ще губят толкова много време. Ще видим какво ще се случи тогава или ако наистина се приложим за компилиране на самата склонност, uprmi и zypper, които вече сме инсталирали.

  6.   анонимен каза той

    3 минути firefox! .... Имахте предвид 30?

    Това отне известно време на моя компютър с fx8350 при 4.5G, използвам gentoo.
    $ genlop -t firefox | tail -n3
    Сб. 6 дек. 20:00:00 2014 г. >>> www-client / firefox-34.0.5-r1
    време за сливане: 16 минути и 35 секунди

    Тези инструкции, специфични за всеки процесор, се наричат ​​мнемоника и се прилагат физически в микропроцесора, те съставляват машинния език, следователно съставят така, че дадена програма може да работи на много видове микропроцесори, ако или ако трябва да бъдат ограничени до най-малкото често срещана мнемотехника, поддържана във всички тези микропроцесори ... губи истински капацитет на най-модерните и мощни микропроцесори.
    Ето как го правят компаниите и двоичните дистрибуции на gnu / linux.

    1.    Шианкор каза той

      С Intel i7 4790K с 18gb RAM, това, което казах преди, взе

      1.    анонимен каза той

        Разбирам, че микрофонът, който имате, е по-добър, но разликата е бездна, истината трябва да е савана с тази скорост. Може би това е нещо, свързано със зависимости или USE, които са същите като опциите за конфигуриране при ръчно компилиране.

      2.    Джони каза той

        Малка подробност, която сте избегнали, за да кажете 18 GB на Ram освен i7, не всеки разполага с тази машина, но бихте могли да направите бенчмаркинг, така че разликата да е забележима, защото теорията е хубава, но нека видим дали компенсира.

      3.    Cristian каза той

        Друга страхотна подробност е процесорът Intel, следователно той има най-добрата плаваща запетая, независима от модела, много подходяща функция за извършване на този тип процес

    2.    Езекиел каза той

      Вярно е, компилирането е досадно. Но вие научавате много, като регенерирате на Makefiles, библиотеки и т.н. Това е нещо, което е добре да се направи дори няколко пъти. Използвам всичко предварително компилирано по същата причина, която Tanrax цитира.

      Поздрави от Аржентина!

  7.   Ерик Карвахал каза той

    Проблемът, който обикновено имам, когато се опитвам да компилирам изцяло нови версии на програмите, винаги се дължи на зависимости, понякога е необходимо да се компилират всички (за да стигнете до най-новите версии) и след това да помислите дали можете да компилирате това, което искате.

    Проблемите с PATH и FLAGS са нещата, които все още ме възпират да искам да компилирам всичко (въпреки че обикновено го правя по начина, по който мога). Един от инструментите, с които обикновено се консултирам, за да мога да компилирам зависимостите, е следният уебсайт - http://www.linuxfromscratch.org/ -

    #LinuxFromScratch е проект, който предоставя инструкции "стъпка по стъпка" за компилиране на изходния код, който трябва да използвате в системата .. (98% от необходимото за компилиране съм постигнал, като ме насочва оттук и постепенно се учи).

    Като плюс мисля, че компилирането на система от 0 би било интересно, особено за среди за разработка или сървъри, наред с други неща, за които казваме, че "обикновено не са толкова променливи", колкото персонален компютър, в който постоянно инсталираме и променяме всичко (това е моята гледна точка) в допълнение към факта, че минималната производителност, която се постига при този тип приложения, е много важна.

    Това са точки, за които в днешно време се говори много малко и само "учените" се справят, но е интересно да се дадат на тези видове уроци, от които се нуждаят, така че всеки ден да намираме повече хора, които допринасят за помощ на различните общности, в които участват и Не само, че Gnu / Linux остава навреме поради лошото представяне на сътрудниците, въпреки че досега „работеше по този начин“, не е много здравословно да има само крайни потребители.

  8.   Орел Рабуда каза той

    Позволете ми малко допълнение. За да получите предимствата, които излагате тук, трябва правилно да конфигурирате добре познатия make.conf. Там са посочени семейството процесори и флаговете за компилация. По същия начин там можете да посочите броя на ядрата, които да използвате по време на компилацията. Когато използвате всички ядра на микрофона си, времето за компилация драстично намалява.

    поздравления

  9.   Sebastian каза той

    Много добра статия. Бих искал и пример, или бих искал директно, публикация за това как да компилирам в archlinux или как да използвам AUR. Честита Нова година от Мендоса.

  10.   The Guillox каза той

    Отдавна ... Винаги съм компилирал ядрото, но е много досадно да се чака 40 минути: / така или иначе ... Отдавна не съм компилирал нищо освен видео драйверите (само за специални конфигурации).

  11.   Александър каза той

    Статията е много интересна, но не сър, опаковането и компилирането не е едно и също;) ..

  12.   c4експлозивен каза той

    Много добър пост. Съгласен съм относно компилирането на определени програми, но понякога е досадно, така че машината отнема процеса. Но освен това човек научава много, особено когато са необходими библиотеки или пакети.
    Мисля, че за Archlinux, за да компилирате, имате нужда от следния пакет: base-devel
    pacman -S base -devel

  13.   убиват плъхове каза той

    Информацията е много добра, но истината е, че не е необходимо да се компилира, ако сте стандартен потребител и просто искате нещо да работи по този начин, дори не докосвайте това. Досадно е да компилираш, винаги, винаги казвам, че ти липсва библиотека, намираш един или друг проблем, кажи ми да компилирам сървъра на minecraft, така че всичко да е възможно най-добро и да отделя време ... освен че всеки път, когато излезе актуализация или корекция или каквото и да е, започнете да компилирате xd отново

    1.    kik1n каза той

      Точно, компилирането е за много специфични програми, които трябва да използвате оптимално, защото компилирането на всичко и както казвате, винаги има актуализации, най-вече подвижните дистрибуции на изданието, е досадно. Бих препоръчал само lts ядра.

  14.   FedoraUser каза той

    Днес почти всички процесори, които хората използват, поддържат едни и същи инструкции, следователно компилирането е благоприятно само когато става въпрос за ядрото и в система като сървър, че и очевидно, когато няма предварително компилирани пакети, всичко останало е загуба на време.

  15.   Хуан Мера каза той

    Добър принос, ще се опитам да видя как върви, засега през повечето време (почти винаги) инсталирам от хранилищата ...
    Малко наблюдение: Опциите на командата rar са нескриптирани и bunzip2 само разархивира.

  16.   Сантяго каза той

    Най-много, което компилирах, беше ядро ​​за debian wheezy и ми отне около 2 часа (имам двуядрен процесор amd e450 1.6 ghz) и точно затова не инсталирам gentoo, времето за компилиране и изтегляне на цялата система ще ми отнеме около 18 часа и че ако нямам проблем, вярно е, че е по-добре да компилирам, но през повечето време отнемането е твърде много и мисля, че не си струва. Имате ускорение на скоростта, но това не е много и мисля, че не оправдава цялото вложено време. Въпреки че ако един ден имам компютър с толкова добър процесор като вашия, ще се опитам да инсталирам gentoo 😛

  17.   Вампии каза той

    Хора:

    Без намерения за пламък или каквото и да било, ленивите виждат като естествено да компилират, генерират двоичен файл, инсталират го със съответния манипулатор на пакети (който разрешава зависимостите очевидно, slapt-get, swaret, slackyd и / или няколко други), като всичко е оптимизирано за нашия екип и сякаш нищо, което не е нищо, за което да пишем вкъщи или квантовата физика.

    Гледането на DVD без препъване на P3 750MHz с 192MB RAM не е нито невъзможно, нито трудно постижимо от Slackware. Аз потвърждавам и това е по-бързо от компилирането на Gentoo. Но не е същото, аз също използвам Gentoo.

    Разликата между хакер и потребител е, че потребителят казва „Иска ми се да работи по този начин“, а хакерът „Имам отвертка и няколко минути“ - Раел Дорнфест

  18.   Пепенрике каза той

    Наистина ли има забележимо подобрение на производителността?
    С последно поколение i7 и 18 Gb RAM, как забелязвате разликата между компилираните пакети и двоичните файлове?

    Винаги съм мразел пригодността на самокомпилиращите се пакети, но мисля, че в днешната работна среда е много сложно да се поддържа, особено поради сложността на зависимостите, непрекъснатите актуализации и огромната зависимост от несвободните източници., както в случая със собствени драйвери, които несъмнено влияят на производителността много повече от всеки аспект, който може да бъде компилиран ...

    поздрави

    1.    Шианкор каза той

      Като се има предвид, че Gnome 3 само го компилира (имената ще кажа грубо, тъй като имената на пакетите не си спомням): черупката (лентата), gnome-control-center (пълен, със своите зависимости и т.н.), аплетът за времето и около 2 или 3 зависимости, за да работи черупката. Очевидно черупката изискваше повече зависимости, за да работят всички нейни функции, но ме накара да компилирам GDM, наред с други, поправих това, като го модифицирах с GConf, след като черупката беше компилирана.
      Сега, когато вляза (чрез терминал), средата отнема много по-малко време за зареждане, отколкото когато беше инсталирана предварително компилирана. Хвърляйки време във въздуха, по предварително компилиран начин, мисля, че отне около 3 или 4 секунди, за да заредите черупката (с около 5, в които се показва тапетът, така и не разбрах защо отне толкова време, струва ми се, че е заради драйвера с GT 630) и се компилира веднага след като въведох паролата X стартира org и средата се зарежда (с предварително зареждане и прелинк ги направих много по-бързо, струва ми се, че е, защото бяха предадени на кеш паметта; https://www.google.com.ar/search?q=preload+y+prelink+fedora&ie=utf-8&oe=utf-8&gws_rd=cr&ei=iXaqVPykO4qYNpbTgdAP )

    2.    Марио каза той

      Фактът, че i7 има ss4 и ss3 инструкции, които се игнорират от общи компилации от различни дистрибуции (debian компилации за 486, ubuntu за 686) може да ви даде представа кога харчи хардуер, опитвайки се да обхване 20-годишен процесор - може би благодаря за подкрепата на моя стар пентиум mmx-. Ако имате нужда от "собствени драйвери", както споменахте, ядрото предоставя възможност за зареждане на специфичен фърмуер по време на компилация. Няма повече странни проблеми с xorg.

  19.   Фабиан Алексис каза той

    Благодаря за информацията, винаги е добре да се научите (или да научите отново) (:

  20.   Ксавие каза той

    Debian с удоволствие от Gentoo 🙂
    http://crysol.org/es/node/699

  21.   Шест юана каза той

    Друг недостатък е, че компилацията по терминал е за потребители, които знаят или вече имат известни познания за Linux. Има ли графичен инструмент, който не управлява компилацията, инсталирането и актуализирането на програми, а графично?

    1.    Марио каза той

      Изчислете Linux го прави, това е gentoo с графични инструменти, готови за компилация. В Phoronix обикновено го препоръчват.

  22.   Жозе каза той

    Аз съм потребител на Linux, понякога, когато искам да инсталирам програма от хранилището, се инсталират старите версии на програмата, просто защото новите не са компилирани за въпросния дистрибутор, мисля, че знанието как да се компилира е от съществено значение, още повече, когато се използват редки дистрибуции.

  23.   Джоан каза той

    Всичко, което пише в публикацията, е добре и не се съмнявам, че е вярно, но разликата в производителността между инсталирането на двоичен пакет и самокомпилирането е незабележима за потребителя.

    А недостатъците на компилирането са много и ако те са ясно доловими за потребителя. Затова аз лично стъпвам към компилация.

  24.   NauTiluS каза той

    Където забелязах най-висока производителност при компилиране на ядрото, то беше на лаптоп с процесор AMD 64. Промяната между фабричното ядро ​​и компилираното беше жестока.

    В момента имам фабрично ядро ​​в системата си, защото както се казва много тук, имаше време, когато компилирах почти всичко и се уморих.

    В момента компилирам само някои жизненоважни програми, като например да използвам малък сървър или да играя с емулатори. Не много отдавна направих публикация за това как да съставя версията за маме. Тези програми обикновено забелязват, когато го оптимизирате за вашата система.

    Просто трябва да опитам този gentoo дистрибутор и да видя как върви представянето.

  25.   NauTiluS каза той

    Забравих да добавя, за хората, които отнемат много време на компилирането на ядрото, повече от 30 минути, има няколко трика да го направят за по-малко време.

    Един от тези трикове е, че само компилирайте модулите на вашето оборудване, максимум, може би най-много 70 модула е това, което ви се струва и ако добавим поддръжката на iptables с всичките му изисквания, мисля, че ще се увеличи до 300 модула. Хайде, това е много по-добре от компилирането на 3000 нечетни модула, цифра, която в момента работи, ако модулите на ядрото се компилират, тъй като идват от фабриката или както се казва, ванилия.

    Програмата, която ще ви помогне да разберете кои модули ядрото разпознава понастоящем във вашата система, е "localmodconfig" или като използвате този скрипт "streamline_config.pl", намиращ се в директорията на ядрото, в пътя "/ scripts / kconfig /»

    Разбира се, уверете се, че всичките ви USB устройства са свързани, тъй като след като ядрото разпознае всичките ви модули, става въпрос само за компилиране.

    Ядрото ще бъде много леко и ще почувствате известна свежест в системата, както и ще ускорите стартирането и изключването на системата повече.

    Поздрави.

  26.   Табрис каза той

    Животът не е толкова лесен! има програми, които използват cmake или други неща и поддържането на всичко актуализирано и компилирано отнема време. И ако имате такъв процесор, каква разлика ще има за вас?

  27.   Yoyo каза той

    Проблемът с компилирането е, че някои от програмите, които инсталираме с този метод, след това не се деинсталират или дават грешки при това, така че не можем да ги деинсталираме.

    1.    анонимен каза той

      Трябва да запазите папката с компилираните източници, когато искате да деинсталирате, всичко, което трябва да направите, е да отидете в папката източници и от терминал като root изпълнение:

      # направи деинсталиране

      Разбира се, пакетите, компилирани на ръка по подразбиране във всеки сериозен дистрибутор, се инсталират отделно, т.е. преплетени.

  28.   freebsddick каза той

    Статията повдига няколко интересни неща, но липсва ужасно качество по отношение на термините и логическата си структура.

    «В изпълнима програма за нейното функциониране чрез използването на ПРОЦЕСОРА за преобразуване на езика, използван за генериране на кода в двоичен файл и асемблер. Също така често се нарича опаковка. "

    Невярно. всъщност се използва компилатор, той е отговорен за предаването на инструкциите на определен език за програмиране към съответния му език за сглобяване и след това превеждането му на машинен език.

    Асемблерният език е мнемоника, която отразява група инструкции, намиращи се в регистрите на чипа.

    «Когато сами изтегляте, декомпресирате и компилирате изходния код на програма, той се компилира с конкретните инструкции на ВАШИЯ процесор»

    Когато компилирате програма, това просто ще бъде направено с инструкциите, общи за архитектурата.Зависи от всеки потребител да активира съответните флагове на компилатора, за да оптимизира програма за конкретен процесор.

    По отношение на това, което коментирате при компилирането на ядрото:
    Когато компилирате ядрото, търсите да активирате или деактивирате функции, които могат или не могат да бъдат полезни в определен момент, което не е задължително да бъде отразено в съотношението размер и скорост в изпълнението на натоварването.

    Когато се позовавате на следния раздел:

    dh-make devscripts fakeroot debhelper debian-policy ccache dh-autoreconf autotools-dev build-dep

    Тези програми не са от съществено значение за съставянето на програма. Както се опитвахте да кажете в началото, количеството езици за програмиране ви пречи да знаете със сигурност какви инструменти трябва да сте инсталирали, за да можете да компилирате програми в gnu / linux ... можете да знаете, че само като се консултирате с документация на програмата, която искате да изпълните. Програмите, които споменавате, се използват за ДЕБИАНИЗИРАНЕ и пакетиране в този формат на програма, която може или не може да бъде компилирана.

    В статията има и други въпроси, които се оказват донякъде двусмислени по начина, по който са поставени. Би било трудно да се обърнем към всички тях.

    Предлагам преглед на статията, доколкото е възможно, от нейния създател и настоява за по-добър контрол на качеството на публикациите.

    1.    Пепенрике каза той

      Човече, не е и това.

      Статията не е за списание Science, тя е просто уводна статия и мисля, че в условията, в които е написана, тя е достатъчно задълбочена, за да може начинаещ потребител да разбере ключовите понятия.

      Ако станем академични, три четвърти от публикуваното в интернет не би струвало абсолютно нищо.

      Нека не бъдем толкова пуристи ... невъзможно е да се съгласим на 100% със статия, но не можем непрекъснато да оценяваме "техническо" качество, сякаш бихме оценявали докторска степен.

      Моята пълна подкрепа за автора на тази статия

  29.   без име каза той

    интересна статия

    Винаги е добре любителите на свободата да използват unar вместо rar, за да разархивират rars свободно. ( https://packages.debian.org/jessie/unar )

  30.   Jumi каза той

    Ударих грешката с този проблем ... Започнах да търся в google, но не мога да намеря урок за компилиране на firefox под ubunto 14.04 amd64 бита ... в противен случай тази вечер получавам ядрото със следния урок: http://www.redeszone.net/2014/11/28/como-instalar-el-ultimo-kernel-de-linux-en-ubuntu-14-04-lts/

  31.   Карлос Фера каза той

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

  32.   Бабел каза той

    Между тази статия и тази от Gentoo, която те публикуваха преди няколко дни, те ме изкушават да инсталирам Gentoo на моя компютър. Преди много години използвах Sabayon, който улесни целия процес на инсталиране, но запази основата, която трябва да се компилира от източника. Честно казано не си спомням да забелязах каквато и да е разлика в производителността на моя лаптоп (по това време имах обиколка) със Sabayon или Ubuntu, така че не знам дали да си хвърля цялата работа по изтриването на Arch, която работи много добре, за да го инсталирам. Не съм сигурен, че няколко милисекунди на програма си заслужават.

    1.    анонимен каза той

      От 4-те броя с gentoo, които съм инсталирал и актуализирал, се добавя бележникът, който е имал archlinux ... Systemd ме умори, вече трябваше да го използвам с startx, защото при последната актуализация и двете ядра изстреляха до 85% от употребата, без да правя нищо, изследвах и изглежда, че нещо се е променило в systemd, за да накара тънък да полудее и да изяде микропроцесора.
      Достатъчно, беше достатъчно с арка .... твърде дълго продължи, повече от две години, сега инсталирам gentoo, отивам за актуализацията на етап 3, за тази вечер ще отиде отворена кутия с картофки.

  33.   Лъв каза той

    Хубава статия, кара ме да компилирам Qupzilla, но с sempron ще отнеме дни, добре, знам не толкова дълго, но все пак създава лошо впечатление.

  34.   Мануел Апонте каза той

    Друг недостатък на компилацията е, че когато има актуализация, е необходимо да се компилира и инсталира актуализацията отново, което е проблем, тъй като някои програми имат кратки цикли на разработка и за тях актуализациите се издават често, 2 до 3 месеца, с всичко това случайният потребител се отегчава и постоянният потребител отнема много време, за да поддържа системата си актуална.

  35.   Мануел Апонте каза той

    Бих искал да знам кои приложения е по-препоръчително да се компилират. според неговата полезност, честота на актуализиране и подобряване на производителността.

  36.   Алекс Пол каза той

    Това е абсурдно, ако трябва да се компилирате, използвате неправилно разпределение. Единствената причина за компилиране е да добавите опции за отстраняване на грешки, които да ви забавят, в замяна на по-добро отстраняване на грешките на другите.
    Вашата система не е бавна, защото се нуждае от -O3, тя е бавна, защото има програма, която чете твърде много на диск или рисува твърде много на екрана.

    Моята препоръка: вместо микро оптимизиране на нашата система, нека работим като общност за подобряване на софтуера, който всички имаме.

  37.   Хавиер Фернандес каза той

    Не сте обяснили как да оптимизирате компилацията, например в Gentoo се използват опции USE за оптимизиране на генерирания код, трябва да посочите и процесора и т.н. Как се прави това в UBUNTU / Debian или Arch?, Интересна статия.

  38.   Жозе Мануел каза той

    Добре!

    При липса на четене на коментарите по-долу имам начинаещ в linux:

    Използвам Fedora 20, вече имам инсталирани доста неща, например браузърът Firefox, за да го компилирам за моята машина, мога ли да го направя без повече шум?, Тоест под кода и да го компилирам, или трябва първо да изтрия програмата, която вече Изтеглих, за да компилирам новия ...

    Същото е и с ядрото на Linux и подобни ...

    Може би питам нещо абсурдно, но вече казвам, че съм доста начинаещ в сериозните неща за Linux хаха

    Поздрави!

    1.    Копротк каза той

      Мисля, че ядрото не е необходимо, но трябва да създадете запис за всяко ядро ​​в GRUB, с firefox не знам дали се препоръчва да имате 2 firefox, лично предпочитам да има 1 само ядро ​​и 1 само firefox

  39.   ст-авапксия каза той

    Единственото нещо, което съм компилирал през живота си, е версия в разработката на Musique, наистина харесвам това приложение, струваше си цялото време, необходимо за процеса. За краен потребител като мен, когато завърших, се чувствах изпълнен.

    Поздрави, отличен блог.

  40.   екослокер каза той

    Здравейте, използвам Slackware и компилирането на приложения е най-нормалното нещо в света.
    Системата се инсталира от предварително компилиран ISO и предварително компилираните приложения, които можете да използвате от официалното хранилище, са малко, въпреки че ако искате можете да изтеглите изходния код на системата (и оригиналните скриптове, с които е компилиран целия дистрибутор ) и го компилирайте сами, което според мен работи Gentoo.
    Проектът SlackBuilds обаче предоставя скриптове (подобно на официалния дистрибутор) за много приложения на трети страни, в които изтегляте изходния код на това, което искате да инсталирате, и го конвертирате в пакет tgz или txz, който по-късно се инсталира с него. официалният мениджър на пакети на distro. Следователно предимството е, че избягвате да използвате командите за конфигуриране, извършване, извършване на инсталиране и можете да актуализирате, преинсталирате или премахвате пакета като всеки друг и много лесно.
    Недостатъкът е, че в Slackware зависимостите не се разрешават автоматично, както в други дистрибуции, така че първо трябва да компилирате необходимите зависимости и приложението, което искате да инсталирате последно. Програмите, които използвам, са компилирани от LibreOffice, Texmaker, Spyder, Qt5, QtCreator, VLC, Wine, GRASS, QGis и др. В зависимост от приложението и неговите изисквания, компилирането и инсталирането може да отнеме от 5 минути до няколко часа. Но ако искате, можете да намерите и използвате предварително компилиран пакет, за да си спестите време.
    Не съм имал време да проверя дали има голяма разлика между компилираните и предварително компилираните пакети, но системата ми е много стабилна. Но мисля, че поне в моя лаптоп няма голяма разлика, защото не е толкова мощен, има i3 процесор и 4 GB RAM.
    Поздрави и успех при съставянето.

  41.   Копротк каза той

    В момента използвам Funtoo, за да бъда честен, не виждам никаква разлика в производителността между компилиране на програма или инсталиране на предварително компилираната, аз го правя чисто с образователна цел, но ако има разлики между компилирането на ядрото и не го правите, да Когато използвах debian и исках да компилирам нещо, използвах следната последователност:

    . / Configure
    Направете -j3 (брой ядра + 1)
    Чужд

    Той използва alíen, тъй като създава двоичен файл на компилираната програма и така можете да го инсталирате на вашата система като всеки двоичен файл и така, ако искате да деинсталирате, можете просто да използвате synaptic или друг мениджър на пакети, това е предимството на създаването пакета и инсталирането на пакета като такъв, вместо да правите „make install“

    1.    Юкитеру каза той

      Виждам подобрение, поне с големи и тежки пакети, например Libreoffice в Funtoo отнема много по-малко време за зареждане, отколкото в Debian, същото се случи и с мен с VLC или с mpv и MKV FullHD и мулти-аудио файлове, натоварването е много по-бързо.

      Друга, която също е претърпяла промяната, е Firefox, в Debian наличието на 10 или 15 раздела с моя компютър става мъчение, но с Funtoo успях да имам до 30 отворени и продължава, сякаш нищо и консумацията на овен е много по-ниска и по-малка Склонен към замразяване за JS файлове, мисля, че зависи повече от контекста на това как се изпълняват определени задачи и програми.

  42.   Марко Сармиенто каза той

    Проблемът е, че когато го изтеглим предварително компилиран, ние превръщаме всяка дистрибуция на Linux в грубо копие на windows

  43.   Фермин каза той

    Повече от впечатляващо увеличение на производителността, виждам предимството във възможността за компилиране на пакетите с компонентите, които човек иска: например, ако нямате принтер, можете да посочите, че пакетите с поддръжка за CUPS не са компилирани -пакетите, които използват CUPS, очевидно, ако компилирате Hunspell със или без CUPS, това няма да има значение - просто - поне в Gentoo - посочване във файла make.conf, където всички опции за изграждане на пакети са централизирани "- cups "; ако използвате KDE5 или Plasma 5, както те го наричат ​​сега, можете да посочите маркерите "-kde", "-qt4", които бяха валидни маркери за KDE 4, но ненужни в KDE 5 и приложения, пренесени на новия работен плот, "-gnome", "-Gtk" и т.н. с всеки компонент, за който знаете, че не ви е необходим. Ако по някаква причина се нуждае от конкретна програма, да кажем GTK, тогава можете във файл, наречен package.use, да посочите, че използва GTK, например за Pidgin със същия етикет, но без знак минус, т.е. " gtk »:« Net-im / pidgin gtk ».
    По този начин се постига система с няколкостотин мегабайта по-леки и по-малки и по-ефективни двоични файлове, тъй като тя няма излишен код. Преминах от Ubuntu до Gentoo чрез Opensuse, Kubuntu, Debian, Arch, Chakra или KaOS, а Gentoo е най-бързата система, която съм имал, и все още имам същия Core 2 Duo, който имах преди 7 години. Разбира се, оставям компилациите за през нощта, защото съставянето на QT5 например отнема няколко часа. Ако зададете параметъра "niceness" за Portage в make.conf, можете да инсталирате пакети или да актуализирате, докато продължавате да работите с машината и едва ли забелязвате много забавяне, въпреки че очевидно времето за компилация се увеличава; но хайде, като го сложа да се инсталира или актуализира, когато отида на вечеря, и ако е необходимо да го оставя да работи през нощта, старият ми компютър работи по-добре от I3 на приятелката ми с Kubuntu.

    Друг все по-важен аспект е, че при компилиране от изходни файлове сигурността, че пакетът, който инсталираме, е оригиналният, че не е манипулиран от трети страни, е почти пълна. Мисля, че Debian прилага система за проверка на компилацията, която ще гарантира малко повече от прекомпилацията, която инсталирахме, всъщност идва от оригиналния източник, но никога няма да има толкова голяма сигурност, когато този пакет е компилиран на нашата машина с нашата настройка.
    По мое мнение, с модерен процесор, а не тресчотка като моята, хе-хе и, ако искаме да ускорим процеса, с 8 GB RAM, за да може да се монтира / var / tmp-временната папка, за която Portage използва компилация - в RAM, която винаги ще бъде по-бърза от твърдия диск или SSD, днес не виждам много смисъл да използвам предварително компилирани пакети. Ако моят компютър на Firefox отнема около 40 минути, за да се компилира, колко време може да отнеме на I5 или I7, който в момента е на пазара, 5 минути, дори по-малко? Говоря за firefox източник, а не за firefox-bin, който е предварително компилиран двоичен пакет, който може да се инсталира на Gentoo, ако имате много бавна машина - има няколко големи пакета, които вече се предлагат предварително компилирани поради тази причина, не е задължително да се компилира всичко -. Не мога да говоря, защото моята приятелка не ми позволява да се бъзикам с компютъра й, хе-хе, а моят върви толкова добре, че не чувствам нужда да го подновя, но ако съм прав, мисля, че си струва няколко минути компилиране, за да има система, направена по мярка. По-приспособени и адаптирани към нашата машина, не мисля, че нещо може да се постигне, без да се впускаме в тези методи на Linux от нулата, Linux от нулата, които според мен вече са запазени за компютърни учени или много напреднали ценители на Linux.

    Поздрави.

  44.   Пато каза той

    Muy bueno!
    само едно нещо не съществува «Amd Atom x2»
    ni existira е търговска марка на intel
    отношение на