Ero sivun ”Kääntäminen” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p Uusi esittely teksti |
Kehityskirjastojen asennus eri jakeluissa |
||
| (8 välissä olevaa versiota samalta käyttäjältä ei näytetä) | |||
| Rivi 10: | Rivi 10: | ||
== Nykyaikaiset rakennusjärjestelmät == | == Nykyaikaiset rakennusjärjestelmät == | ||
=== CMake === | === CMake === | ||
[[CMake]] on yksi yleisimmistä ja de facto -standardeista rakennusjärjestelmistä monissa C/C++-projekteissa, erityisesti suurissa projekteissa kuten [[KDE]]. | [[CMake]] on yksi yleisimmistä ja de facto -standardeista rakennusjärjestelmistä monissa [[C]]/[[C++]]-projekteissa, erityisesti suurissa projekteissa kuten [[KDE]]-ympäristössä. | ||
Tyypillinen prosessi | ==== Tyypillinen prosessi ==== | ||
Modernit kääntämistavat suosivat ulkopuolista käännöstä (out-of-source build). Tämä tarkoittaa, että kääntämisen luomat tiedostot (Makefile, objektit yms.) sijoitetaan omaan erilliseen hakemistoon (esim. build), jolloin lähdekoodihakemisto pysyy puhtaana. | |||
<syntaxhighlight lang="bash"> | |||
# 1. Luo erillinen käännöshakemisto ja siirry sinne | |||
mkdir build | |||
cd build | |||
# 2. Luo käännöstiedostot (Makefiles) lähdekoodin perusteella (lähdekoodi on ".." eli yksi ylöspäin hakemistorakenteessa.) | |||
cmake .. | |||
# 3. Käännä ohjelma (voidaan käyttää make- tai cmake --build -komentoa) | |||
make | |||
# 4. Asenna ohjelma järjestelmään | |||
sudo make install | |||
</syntaxhighlight> | |||
=== Meson === | === Meson === | ||
[[Meson]] on uudempi, nopea ja suosittu rakennusjärjestelmä, joka on yleistynyt erityisesti [[GNOME]]-ympäristön ja monien muiden vapaan lähdekoodin projektien keskuudessa. | [[Meson]] on uudempi, nopea ja suosittu rakennusjärjestelmä, joka on yleistynyt erityisesti [[GNOME]]-ympäristön ja monien muiden vapaan lähdekoodin projektien keskuudessa. Se käyttää tyypillisesti [[Ninja]]-työkalua käännösprosessin suorittamiseen. | ||
==== Tyypillinen prosessi ==== | |||
<syntaxhighlight lang="bash"> | |||
# 1. Luo käännöshakemisto (Meson hoitaa tämän itse) | |||
meson setup builddir | |||
# 2. Käännä ohjelma Meson-hakemistossa | |||
meson compile -C builddir | |||
# 3. Asenna ohjelma järjestelmään | |||
sudo meson install -C builddir | |||
</syntaxhighlight> | |||
[[Ninja]] on nopea, matalan tason rakennusjärjestelmä, jota [[Meson]] käyttää suoraan ja jonka [[CMake]] voi valita taustajärjestelmäksi perinteisen | === Ninja ja riippuvuuksien hallinta === | ||
[[Ninja]] on nopea, matalan tason rakennusjärjestelmä, jota [[Meson]] käyttää suoraan ja jonka [[CMake]] voi valita taustajärjestelmäksi perinteisen Makefilen sijaan käännösprosessin nopeuttamiseksi. | |||
Kaikki rakennusjärjestelmät tarvitsevat usein apua löytääkseen järjestelmästä puuttuvat kehityskirjastot (headerit). ''[[pkg-config]]'' on standardi työkalu, joka auttaa rakennusjärjestelmiä löytämään tarvittavat kirjastotiedostot ja niiden sijainnit. | |||
== Perinteinen GNU Autotools tapa == | == Perinteinen GNU Autotools -tapa == | ||
Vaikka tämä prosessi on edelleen validi ja käytössä monissa vanhemmissa tai yksinkertaisemmissa projekteissa | Vaikka nykyaikaiset järjestelmät ovat yleistyneet, tämä prosessi on edelleen validi ja käytössä monissa vanhemmissa tai yksinkertaisemmissa projekteissa. | ||
Ohjelmat kannattaa yleisesti ottaen asentaa jotenkin | Ohjelmat kannattaa yleisesti ottaen asentaa jotenkin muuten kuin muualta haettua koodia kääntämällä. Jos itse kääntäminen on välttämätöntä, käy se yleensä näin: | ||
'''1. Valmistelut:''' Tarkista, että ainakin [[gcc]] ja [[make]] ovat asennettuina. | |||
'''2. Lähdekoodin haku ja purku:''' | |||
[[tar]] xvzf hyvasofta.tar.[[gz]] | [[tar]] xvzf hyvasofta.tar.[[gz]] | ||
| Rivi 42: | Rivi 65: | ||
tar xvjf hyvasofta.tar.[[bz2]] | tar xvjf hyvasofta.tar.[[bz2]] | ||
tai käytä ohjelmistoprojektin [[versionhallintajärjestelmä]]ä. | tai käytä ohjelmistoprojektin [[versionhallintajärjestelmä]]ä (esim. [[Git]]). | ||
'''3. Siirry hakemistoon komennolla:''' | |||
cd hyvasofta | cd hyvasofta | ||
Lue hakemistossa olevat ''README''- tai ''INSTALL''-tiedostot. | |||
'''4. configure -tiedoston luonti (tarvittaessa):''' Mikäli configure-tiedostoa ei löydy, aja ''autoreconf''-[[Bash-skriptaus|skripti]] komennnolla: | |||
autoreconf -i | autoreconf -i | ||
autoreconf ajaa automaattisesti tarvittavat ohjelmat ja luo configure-skriptin. | |||
'''5. Konfigurointi:''' Aja ''configure''-[[Bash-skriptaus|skripti]] komennolla: | |||
./configure | ./configure | ||
# tai määrittele asennuspolku käyttäjän kotihakemistoon: | |||
./configure --prefix=$HOME/ohjelmat/ | |||
tai | * Riippuvuudet: Jos ''configure'' epäonnistuu puuttuvien riippuvuuksien vuoksi (kehityskirjastot eli headerit), ne löytyvät paketinhallinnasta yleensä päätteellä ''-devel'' tai ''-dev''. [[Debian]]-pohjaisissa jakeluissa ne on usein helppo asentaa komennolla: | ||
sudo apt-get build-dep ohjelma | |||
{| class="wikitable" | |||
|+ Kehityskirjastojen asennus eri jakeluissa | |||
|- | |||
! Jakeluperhe (Paketinhallinta) !! Yleinen pääte !! Esimerkki asennuskomento | |||
|- | |||
| Debian, Ubuntu, Mint (APT) || -dev || sudo apt install libssl-dev | |||
|- | |||
| Fedora, Red Hat, CentOS (RPM / DNF) || -devel || sudo dnf install openssl-devel | |||
|- | |||
| Arch, Manjaro (Pacman) || Ei yleistä päätettä, usein pelkkä paketin nimi || sudo pacman -S openssl | |||
|- | |||
| OpenSUSE (Zypper) || -devel || sudo zypper install openssl-devel | |||
|} | |||
'''6. Kääntäminen:''' | |||
make | make | ||
'''7. Asennus:''' Siirry [[pääkäyttäjä]]ksi ja asenna ohjelma (katso kuitenkin kohta [[Kääntäminen#Kääntäminen ja paketinhallinta|Kääntäminen ja paketinhallinta]]): | |||
sudo make install | |||
'''8. Siivoaminen ja poisto:''' Voit poistaa luodut binäärit ja Makefilen lähdekoodihakemistosta komennolla ''make clean''. Joskus Makefilessa on myös poistotoiminto ''make uninstall''. | |||
make clean | make clean | ||
== Kääntäminen ja paketinhallinta == | == Kääntäminen ja paketinhallinta == | ||
Kenties paras vaihtoehto on tehdä käännetystä ohjelmasta oman jakelun mukainen paketti ja asentaa se paketinhallinnan kautta. Tällöin komentoa | Kenties paras vaihtoehto on tehdä käännetystä ohjelmasta oman jakelun mukainen paketti ja asentaa se paketinhallinnan kautta. Tällöin komentoa ''make install'' ei anneta. | ||
Katso esimerkiksi [[CheckInstall]], sekä [[Deb-paketin tekeminen]]. | |||
Jos käännettävä ohjelmisto tarjoaa jotakin toiminnallisuutta, josta paketinhallinnan olisi hyvä olla tietoinen, | Jos käännettävä ohjelmisto tarjoaa jotakin toiminnallisuutta, josta paketinhallinnan olisi hyvä olla tietoinen, voit luoda niin sanotun '''"dummy"'''-paketin. Dummy-paketti sisältää vain riippuvuudet ja muun metadatan. Debianissa tällaisen paketin tekoon on olemassa apupaketti ''equivs''. | ||
[[Luokka:Järjestelmä]] | [[Luokka:Järjestelmä]] | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] | ||
[[Luokka:Ohjeet]] | [[Luokka:Ohjeet]] | ||