Tipy, triky, návody - pouze návody, nevkládat dotazy! > Správa aplikací
Kterak optimalizovat výkon aplikací, aneb kompilace (nejen) pro n00by
Roman Horník:
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: ---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
--- Konec kódu ---
Manuál:
--- Kód: ---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)
--- Konec kódu ---
1) Jak jej získat?
--- Kód: ---sudo apt-get install apt-build
--- Konec kódu ---
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)
levicek:
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
Roman Horník:
Můj sources.list pro Sida je tady (nelekej se ubunťáren):
--- Kód: ---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
--- Konec kódu ---
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ší.
Jakub Lucký:
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...
Roman Horník:
--- Citace: Jakub Lucký 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...
--- Konce citace ---
sudo dpkg-reconfigure apt-build - tam si můžeš nastavit jak volby pro GCC, tak i pro Make
Navigace
[0] Seznam témat
[#] Další strana
Přejít na plnou verzi