Autor Téma: Kterak optimalizovat výkon aplikací, aneb kompilace (nejen) pro n00by  (Přečteno 6697 krát)

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.331
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Tenhle návod jsem publikoval na ubuntím fóru, ale tady mu to bude slušet víc. Dá se použít prakticky na všech Debian-like distribucích.

Kompilace přináší nejen spoustu výhod, ale taky spoustu starostí, jen málokdo se do toho dobrovolně pustí, neboť je třeba doinstalovat si některý kompilátory, spoustu *-dev balíků a hlavně ten někdo musí vědět, jak se co kompiluje, někde totiž nestačí hodit do stroje svatou trojici a pak se těšit z úspěchu.

Hlavní výhodou kompilace je, že si ušijete program svý mašince na míru, ten pak může poskytnout vyšší výkon, program samotný pak může na disku zabrat i o něco méně místa.

Většinu nevýhod kompilace odstraňuje program apt-build. Sám se postará o získání potřebných balíků, sám si zkompiluje, sám vytvoří DEB balík, sám vytvoří lokální repozitář, sám nainstaluje.

Funkce, co vám apt-build nabídne:
Kód: [Vybrat]
Commands:
  update            - Update package lists
  upgrade           - Perform an upgrade
  install           - Build and install new packages
  source            - Download and extract source in build directory
  build-source      - Download, extract and build source package
  update-source     - Update all sources and rebuild them
  remove            - Remove packages
  build-repository  - Rebuild the repository
  clean-sources     - Clean up all object files in source directories
  clean-build       - Erase downloaded packages and temporary build files
  clean-repository  - Erase downloaded packages and temporary build files
  world             - Rebuild and reinstall all packages on your system
  info              - Build-related package information

Options:
  --reinstall       - Re-build and install already installed package
  --rebuild         - Rebuild package
  --remove-builddep - Remove build-dependencies installed by apt-build
  --nowrapper       - Do not use gcc/g++ wrapper
  --purge           - Use purge instead of remove
  --noupdate        - Do not run 'apt-get update' before package installation
  --build-command   - Use <command> to build package
  --patch <file>    - Apply patch <file>s before the build
  --patch-strip     - Striplevel for the patch files
  --yes         -y  - Assume yes
  --version     -v  - Show version and exit
  --force-yes       - Force yes
  --source          - Do not download source (sources are extracted already)
  --build-only      - Do not install any of build dependencies or <package>
  --build-dir       - Specify build dir
  --repository-dir  - Specify the repository directory
  --target-release  - Distribution to fetch packages from
  --sources-list    - Specify sources.list file
  --apt-get         - Specify an alternative apt-get application to use
  --apt-cache       - Specify an alternative apt-cache application to use
  --config          - Specify an alternative configuration file

Manuál:
Kód: [Vybrat]
APT-BUILD(1)                                                                                                                                                  APT-BUILD(1)



NAME
       apt-build - Fetch sources and build packages optimized for your architecture.

SYNOPSIS
       apt-build [ options ] [ update ] [ upgrade ] [ world ] [ install pkg ] [ remove pkg ] [ info pkg ]

DESCRIPTION
       apt-build is an apt-get frontend to build and install architecture optimized packages.

COMMANDS
       update Retrieve new lists of packages

       upgrade
              Perform an upgrade

       world  Rebuild your system

       install
              Build and install new packages

       source Download and extract source in the build directory

       info   Info on a package which could be built

       remove Remove packages

       clean-build
              Erase built packages

       clean-sources
              Call debian/rules clean in source directories

       build-source
              Build source without installing them

       update-source
              Update sources and rebuild them if they are missing in the repository

       build-repository
              Rebuild the repository

OPTIONS
       --help
              Shows help

       --nowrapper
              Do not use the gcc wrapper

       --remove-builddep
              Remove build-dependencies installed by apt-build

       --no-source
              Don't download source

       --build-dir
              Specify build-dir

       --build-only
              Build package only

       --rebuild
              Rebuild a package

       --reinstall
              Build and install an already installed package

       --build-command <command>
              Use this command to build package

       --patch <file>
              Apply this patch before build (you can use this option one or several times)

       --patch-strip, -p <number>
              Prefix to strip on patch (0 = -p0, 1 = -p1 ...)

       --yes, -y
              Assume yes

       --purge
              Use purge instead of remove

       --noupdate
              Do not run 'apt-get update' before package installation

       --sources-list
              Specify sources.list file

       --apt-get
              Specify an alternative apt-get command

       --apt-cache
              Specify an alternative apt-cache command

       --force-yes
              Force yes

       --source
              Do not download source (sources are extracted already)

       --repository-dir
              Specify the repository directory

       --target-release
              Distribution to fetch packages from

       --config
              Specify an alternative configuration file

       --version, -v
              Show version

BUGS
       Many.

AUTHOR
       apt-build was written by Julien Danjou <acid@debian.org> with many contributors.



3rd Berkeley Distribution                                                      November 2003                                                                  APT-BUILD(1)

1) Jak jej získat?
Kód: [Vybrat]
sudo apt-get install apt-build
Debconf se vás při instalaci zeptá:
1) Kam stahovat a sestavovat balíky (výchozí: /var/cache/apt-build/build)
2) Kde vytvořit lokální repozitář (výchozí: /var/cache/apt-build/repository) - pokud to není nutný, neměňte. Platí i pro předchozí bod.
3) Jak silnou optimalizaci při kompilaci má použít- lehkou, střední a silnou. Já sice používám silnou (taky to dlouho trvá), vy radši sáhněte po střední.
4) Jestli přidat lokální repozitář do sources.list- odpovězte kladně
5) Volby pro GCC a Make- pokud nevíte, nic tam nepište
6) Architektura vašeho procesoru- pokud nevíte, zeptejte se tady (mám navoleno core2 - Intel Pentium Dual-Core E2180).

2) Jdeme na to

Pokud jste se rozhodli tenhle nástroj použít a máte dost času (kompilace trvá dlouho, někdy pár minut, jindy až několik hodin!), směle do toho!
Většinou se apt-build používá stejně jako apt-get, tzn.:
apt-build install --reinstall nazevbaliku - instalace / reinstalace stávajícího programu programem osobně kompilovaným (použijte radši i volbu --reinstall, je to jistější)
apt-build update = apt-get update - aktualizace databáze balíků
apt-build upgrade - aktualizace aktualizovatelných balíků
atd.
apt-build clean-sources - vyčistí složku sources (může trvat delší dobu)
apt-build clean-build / apt-build clean-repository - vyčistí lokální repozitář
3) FAQ:
Q: Co se stane, když se něco při kompilaci nepovede?
A: Nic, balík se nevytvoří a tím pádem se ani nenainstaluje

Q: Co tím získám?
A: Některý programy budou o dost rychlejší, můžou bejt i stabilnější

Q: Mám z toho strach...
A: Pak zemřeš pomalu a v krutých bolestech s vědomím, žes nic nedokázal


Tip:
Pokud chcete originální spořič obrazovky, nastavte si v Terminálu černý pozadí, zelený písmo, hoďte do /dev/null toolbar a posuvník a pomocí klávesy [F11] uveďte Terminál do fullscreenu.
Výsledek:

Matrix  8)
« Poslední změna: 21. 04. 2013, 02:22:54 od Roman Horník »
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3

Offline levicek

  • Nováček
  • *
  • Příspěvků: 1
    • Zobrazit profil
Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
« Odpověď #1 kdy: 23. 12. 2009, 14:46:58 »
Nevím jestli to sem patří... Zkoušel jsem zkompilovat firefox a totem víc toho nešlo, protože jsem další věci prostě ve zdrojích nenašel. Ale nezdá se mi že by to nějak zrychlilo. Akorát se mi teď při přehrávání filmu občas kousne obraz a vytěžuje víc procesor... Zajímalo by mě jaké máš repozitáře??? mylím že to chce source -ale tam mi dost věcí chybělo, jako gnome věci, metacity,... mám debian Lenny

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.331
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
« Odpověď #2 kdy: 23. 12. 2009, 21:42:16 »
Můj sources.list pro Sida je tady (nelekej se ubunťáren):
Kód: [Vybrat]
deb-src http://ftp.cz.debian.org/debian/ unstable main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb-src http://ftp.cz.debian.org/debian/ testing-proposed-updates contrib non-free main
deb-src http://ppa.launchpad.net/bogdanb/ppa/ubuntu/ jaunty main
deb-src http://ftp.debian.org/debian/ experimental main non-free contrib
deb-src http://packages.enlightenment.org/debian/ sid main extras
deb-src http://debian-multimedia.org/ experimental main non-free
deb-src http://ppa.launchpad.net/shiki/mediainfo/ubuntu/ karmic main
deb-src http://debian-multimedia.org/ unstable main non-free
deb-src http://www.backports.org/debian/ lenny-backports main contrib non-free
deb http://ftp.cz.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb http://volatile.debian.org/debian-volatile/ lenny/volatile main
deb http://ftp.cz.debian.org/debian/ testing-proposed-updates contrib non-free main
deb http://ppa.launchpad.net/bogdanb/ppa/ubuntu/ jaunty main
deb http://ftp.debian.org/debian/ experimental main non-free contrib
deb http://packages.enlightenment.org/debian/ sid main extras
deb http://ppa.launchpad.net/shiki/mediainfo/ubuntu/ karmic main
deb http://debian-multimedia.org/ unstable main non-free
deb http://www.backports.org/debian/ lenny-backports main contrib non-free
deb http://debian-multimedia.org/ experimental main non-free

Důležitý je, abys tam měl na všechno, co jde i deb-src blablabla

Jakej máš procesor? Jakou architekturu sis zvolil? Jak silnou optimalizaci máš?


Samozřejmě ne všechno jde takhle zkompilovat, na něco nemáš v repozitářích zdrojový balíky, něco při kompilaci hází chybu (a pak se to nenainstaluje), v kódu může bejt bug..., klasická kompilace je a vždycky bude lepší, i když často o něco složitější.
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3

Offline Jakub Lucký

  • Uživatel
  • ***
  • Příspěvků: 198
    • Zobrazit profil
    • Skautský oddíl CXL - Praha 4
Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
« Odpověď #3 kdy: 27. 01. 2010, 16:17:59 »
Hm... jsem trošku líný hledat, tak se ptám: Umí to někde nastavit konfigurační volby pro GCC? protože bych na serveru občas překompiloval suPHP na lepší optimalizaci...
Developers, developers, developers, developers, developers!

Offline Roman Horník

  • Hlavní moderátor
  • Aktivní­ uživatel
  • *****
  • Příspěvků: 1.331
    • Zobrazit profil
  • Jabber: roman.hornik@jabber.cz
Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
« Odpověď #4 kdy: 27. 01. 2010, 16:51:59 »
Hm... jsem trošku líný hledat, tak se ptám: Umí to někde nastavit konfigurační volby pro GCC? protože bych na serveru občas překompiloval suPHP na lepší optimalizaci...
sudo dpkg-reconfigure apt-build - tam si můžeš nastavit jak volby pro GCC, tak i pro Make
Debian Sid 64bit + Mate Desktop Environment
* CPU: Intel i5 3570
* GPU: NVIDIA GTX650 1GD5
* MB: Lenovo IH61M
* RAM: 16GiB Deutsche Demokratische Republik 3

Offline Jakub Lucký

  • Uživatel
  • ***
  • Příspěvků: 198
    • Zobrazit profil
    • Skautský oddíl CXL - Praha 4
Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
« Odpověď #5 kdy: 27. 01. 2010, 22:11:00 »
wow, děkuji...
Developers, developers, developers, developers, developers!

Offline Visterius

  • Začátečník
  • **
  • Příspěvků: 73
  • Born to Confuse and Fail
    • Zobrazit profil
Re: Kterak zvětšit výkon aplikací, aneb kompilace (nejen) pro n00by
« Odpověď #6 kdy: 28. 01. 2010, 12:51:38 »
Máš tam typo..
Citace
Funkce, co vám apt-builb nabídne:

Jinak hezký článek, you deserve a cookie for it.

Memento Mori

Debian Sid, E17..

„Internet je to modré e na ploše, po jehož spuštění se zobrazí Seznam internetu.“