Ero sivun ”Kääntäminen” versioiden välillä

Linux.fista
Siirry navigaatioon Siirry hakuun
p (versionhallinta)
(lisäinfoa, päivitystä)
Rivi 1: Rivi 1:
''Tämä artikkeli käsittelee ohjelmien kääntämistä lähdekoodista konekielelle. Ohjelmien suomentamisesta kerrotaan artikkelissa [[Lokalisointi]]''.
''Tämä artikkeli käsittelee ohjelmien kääntämistä lähdekoodista konekielelle. Ohjelmien suomentamisesta kerrotaan artikkelissa [[Kotoistus]]''.


Kääntämisellä tarkoitetaan toimenpidettä, jossa ohjelman [[lähdekoodi]]n perusteella luodaan konekielinen ohjelma, joka on tietokoneen ymmärtämässä muodossa. Konekielinen ohjelma toimii yleensä vain tietyn käyttöjärjestelmän ja prosessorityypin yhdistelmällä, kun taas samasta lähdekoodista voidaan yleensä (jos lähdekoodi on sopivasti kirjoitettu) kääntää versiot monille eri alustoille. Lisäksi lähdekoodia on mahdollista muokata, jos omaa kohtalaiset ohjelmointitaidot. Konekielisen ohjelman muokkaaminen taas ei ole käytännössä mahdollista kuin erittäin rajoitetusti.
[[wikipedia:fi:Ohjelmointikielen kääntäjä|Kääntämisellä]] tarkoitetaan toimenpidettä, jossa ohjelman [[lähdekoodi]]n perusteella luodaan konekielinen ohjelma, joka on tietokoneen ymmärtämässä muodossa. Konekielinen ohjelma toimii yleensä vain tietyn käyttöjärjestelmän ja prosessorityypin yhdistelmällä, kun taas samasta lähdekoodista voidaan yleensä (jos lähdekoodi on sopivasti kirjoitettu) kääntää versiot monille eri alustoille. Lisäksi lähdekoodia on mahdollista muokata, jos omaa kohtalaiset ohjelmointitaidot. Konekielisen ohjelman muokkaaminen taas ei ole käytännössä mahdollista kuin erittäin rajoitetusti.


Jos haluaa muokata oman jakelun pakettia, tämä kannattaa tehdä jakelun omilla työkaluilla ja mieluiten jakelun omasta lähdekoodista (ellei nimenomaan halua toista versiota ohjelmasta - silloinkin jakelun tekemät muutokset on hyvä huomioida). Jatkossa käsitellään muualta haettun lähdekoodin kääntämistä ja asentamista ilman jakelun omia työkaluja.
Jos haluaa muokata oman jakelun pakettia, tämä kannattaa tehdä jakelun omilla työkaluilla ja mieluiten jakelun omasta lähdekoodista (ellei nimenomaan halua toista versiota ohjelmasta - silloinkin jakelun tekemät muutokset on hyvä huomioida). Oman jakelun lähdekoodipaketit on yleensä mahdollista asentaa [[paketinhallinta|paketinhallinnan]] kautta erillisestä asennuslähteestä (source). Jatkossa käsitellään muualta haetun lähdekoodin kääntämistä ja asentamista ilman jakelun omia työkaluja.


Ohjelmat kannattaa yleisesti ottaen asentaa jotenkin [[Ohjelmien asentaminen|muuten]] kuin muualta haettua koodia kääntämällä. Jos itse kääntäminen on välttämätöntä, se käy yleensä näin:
Ohjelmat kannattaa yleisesti ottaen asentaa jotenkin [[Ohjelmien asentaminen|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:


# Tarkista että ainakin [[gcc]] ja [[make]] ovat asennettuina.
# Tarkista että ainakin [[gcc]] ja [[make]] ovat asennettuina.
# Hanki jostakin ohjelman lähdekoodit, joko kopioi ohjelman lähdekoodipaketti ja pura se ( [[tar]] xvzf hyvasofta.tar.gz / tar xvjf hyvasofta.tar.bz2), tai käytä jotakin [[versionhallintajärjestelmä]]ä.
# Hanki jostakin ohjelman lähdekoodit, joko kopioi ohjelman lähdekoodipaketti ja pura se ( <tt>[[tar]] xvzf hyvasofta.tar.[[gz]]</tt> / <tt>tar xvjf hyvasofta.tar.[[bz2]]</tt>), tai käytä ohjelmistoprojektin [[versionhallintajärjestelmä]]ä.
# Siirry paketin hakemistoon (cd hyvasofta)
# Siirry paketin hakemistoon (<tt>cd hyvasofta</tt>)
# Hakemistossa on yleensä tekstitiedostoja, joiden nimet ovat README, INSTALL taikka jotain muuta vastaavaa. Lue nämä ja varmista, että kääntäminen todella tapahtuu niin kuin seuraavassa kerrotaan.
# Hakemistossa on yleensä tekstitiedostoja, joiden nimet ovat README, INSTALL tai vastaavaa. Lue nämä ja varmista, että kääntäminen todella tapahtuu niin kuin seuraavassa kerrotaan.
# Aja configure-[[Bash-skriptaus|skripti]] komennolla ./configure. Jos configure-skriptiä ei ole, kokeile komentoja make config ja/tai make menuconfig. Jos mistään ei tapahdu mitään, katso olisiko hakemistossa install.sh tyylistä skriptiä. Jos on, aja se (./install.sh)
# Aja configure-[[Bash-skriptaus|skripti]] komennolla '''./configure'''. Configure luo käännöksessä tarvittavan [[Makefile]]n. Jos configure-skriptiä ei ole, kokeile komentoja make config ja/tai make menuconfig. Jos mistään ei tapahdu mitään, katso olisiko hakemistossa install.sh-tyylistä skriptiä. Jos on, aja se (./install.sh). Osassa ohjelmapaketteja saattaa myös olla Makefile valmiina, jolloin configurea ei ole, eikä sitä tarvitse ajaa.
# Jos configure-skripti ei mene kunnialla läpi, syy on usein puuttuvissa kehityskirjastoissa. Asenna siis mainitut kirjastot.
# Jos configure-skripti ei mene kunnialla läpi, on syy usein puuttuvissa kehitys[[kirjasto]]issa eli headereissa (skripti mainitsee jonkin tietyn riippuvaisuuden puuttuvan). Nämä löytyvät paketinhallinnan kautta yleensä päätteellä ''-devel'' tai ''-dev'' (esimerkiksi ''[[gimp]]-devel'', pääte vaihtelee jakeluittain). Tilan säästämiseksi useimpien ohjelmien paketointien mukana ei toimiteta niiden kehityskirjastoja, vaan nämä on asennettava erillisestä paketista. Joskus ongelmana voi myös olla se, ettei configure löydä tarvittavaa riippuvaisuutta vaikka se ja sen kehityskirjastot olisi asennettu. Tällöin niiden sijainti on yleensä mahdollista määritellä erillisellä [[valitsin|valitsimella]]. Lisätietoja valitsimista saa komennolla <tt>./configure --help</tt>. Myös INSTALL- tai README-tiedostoissa on usein mainittu asiasta jotakin. [[Debian]]-pohjaisissa jakeluissa kehityskirjastot on yleensä helppo asentaa komennolla <tt>[[apt-get]] build-dep ohjelma</tt>.
# Käännä ohjelma komennolla make
# Käännä ohjelma komennolla '''make'''. Käännön aikana ruutuun tulostuu yleensä runsaasti tietoa käännön etenemisestä. Jos make-komento ei mene läpi, vaan pysähtyy ilmoittaen virheestä jollakin rivillä, on lähdekoodissa todennäköisesti vikaa. Yleensä kyse on lähdekoodin epäyhteensopivuudesta käytetyn kääntäjäversion kanssa. Virheilmoituksen perusteella saattaa olla mahdollista helpostikin korjata virhe. Muussa tapauksessa kannattaa lähettää palautetta ohjelman kehittäjälle.
# Siirry pääkäyttäjäksi komennolla su - ja asenna ohjelma komennolla make install (ks. [[CheckInstall]])
# Siirry [[pääkäyttäjä]]ksi komennolla <tt>su</tt> ja asenna ohjelma komennolla '''make install'''. Tämä kopioi käännetyt binäärit lopulliseen asennushakemistoonsa. Mikäli sinulla ei ole tarvittavia oikeuksia, voit toki käyttää ohjelmaa myös lähdekoodihakemistosta käsin tai määrittää sopivan asennuspolun esimerkiksi kotihakemistostasi. Tämä tapahtuu configuren valitsimella <tt>--prefix</tt>, esimerkiksi --prefix=/home/kayttaja/hyvasofta.


Joskus configure-skriptissä tulee virheitä puuttuvien pakettien kanssa. Tällöin täytyy vain etsiä jostain tarvittava [[kirjasto]] ja asentaa se ensin. On myös mahdollista, että kirjasto itsessään on jo asennettuna, mutta sen header - tiedostoja ym. sisältävä kehityspaketti puuttuu. Esimerkiksi, mikäli configure jää kaipaamaan libaudiofile - pakettia ja se on asennettuna, saattaa kehityspaketti olla nimeltään ([[Debian]]in tapauksessa) libaudiofile-dev. Debianissa ohjelman kääntämiseen tarvittavat kirjastot on useimmiten helppo asentaa komentamalla:
Joskus Makefilessä on myös uninstall-toiminto, jolla ohjelma poisto onnistuu kätevästi komennolla <tt>make uninstall</tt>. Huomaa kuitenkin, että mikäli esimerkiksi poistat näin jonkin [[kirjasto]]n, sitä käyttävät ohjelmat lakkaavat toimimasta. Jos jostain syystä haluat kääntää ohjelman uudelleen, voit poistaa luodut binäärit ja Makefilen lähdekoodihakemistosta komennolla <tt>make clean</tt>.
apt-get build-dep ohjelma


On myös suositeltavaa käyttää configure:n kanssa parametriä --prefix=/opt/hyvasofta jolloin ohjelma asentuu annettuun polkuun (yleensä /opt-alkuinen) ja sieltä se on helppo tarvittaessa poistaa. [[CheckInstall]] toteuttaa saman toimenpiteen ja luo vielä pakettienhallintaan paketitkin.
Kenties paras vaihtoehto on tehdä käännetystä ohjelmasta oman jakelun mukainen paketti ja asentaa se paketinhallinnan kautta. Tällöin komentoa <tt>make install</tt> ei anneta, vaan tilalle tulee jakelun omat paketinluomis- ja asennuskomennot. Katso esimerkiksi [[CheckInstall]] sekä [[Deb-paketin tekeminen]].  
 
Joskus Makefilessä on myös uninstall-toiminto, jolla ohjelma poisto onnistuu kätevästi komennolla <tt>make uninstall</tt>. Huomaa kuitenkin, että mikäli esimerkiksi poistat näin jonkin kirjaston, sitä käyttävät ohjelmat lakkaavat toimimasta.
 
Vielä parempaa on tehdä käännetystä ohjelmasta oman jakelun mukainen paketti ja asentaa se paketinhallinnan kautta. Tällöin komentoa <tt>make install</tt> ei anneta, vaan tilalle tulee jakelun omat paketinluomis- ja asennuskomennot.


[[Luokka:Järjestelmä]]
[[Luokka:Järjestelmä]]
[[Luokka:Kehitystyökalut]]
[[Luokka:Kehitystyökalut]]
[[Luokka:Ohjeet]]

Versio 28. huhtikuuta 2008 kello 23.01

Tämä artikkeli käsittelee ohjelmien kääntämistä lähdekoodista konekielelle. Ohjelmien suomentamisesta kerrotaan artikkelissa Kotoistus.

Kääntämisellä tarkoitetaan toimenpidettä, jossa ohjelman lähdekoodin perusteella luodaan konekielinen ohjelma, joka on tietokoneen ymmärtämässä muodossa. Konekielinen ohjelma toimii yleensä vain tietyn käyttöjärjestelmän ja prosessorityypin yhdistelmällä, kun taas samasta lähdekoodista voidaan yleensä (jos lähdekoodi on sopivasti kirjoitettu) kääntää versiot monille eri alustoille. Lisäksi lähdekoodia on mahdollista muokata, jos omaa kohtalaiset ohjelmointitaidot. Konekielisen ohjelman muokkaaminen taas ei ole käytännössä mahdollista kuin erittäin rajoitetusti.

Jos haluaa muokata oman jakelun pakettia, tämä kannattaa tehdä jakelun omilla työkaluilla ja mieluiten jakelun omasta lähdekoodista (ellei nimenomaan halua toista versiota ohjelmasta - silloinkin jakelun tekemät muutokset on hyvä huomioida). Oman jakelun lähdekoodipaketit on yleensä mahdollista asentaa paketinhallinnan kautta erillisestä asennuslähteestä (source). Jatkossa käsitellään muualta haetun lähdekoodin kääntämistä ja asentamista ilman jakelun omia työkaluja.

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. Tarkista että ainakin gcc ja make ovat asennettuina.
  2. Hanki jostakin ohjelman lähdekoodit, joko kopioi ohjelman lähdekoodipaketti ja pura se ( tar xvzf hyvasofta.tar.gz / tar xvjf hyvasofta.tar.bz2), tai käytä ohjelmistoprojektin versionhallintajärjestelmää.
  3. Siirry paketin hakemistoon (cd hyvasofta)
  4. Hakemistossa on yleensä tekstitiedostoja, joiden nimet ovat README, INSTALL tai vastaavaa. Lue nämä ja varmista, että kääntäminen todella tapahtuu niin kuin seuraavassa kerrotaan.
  5. Aja configure-skripti komennolla ./configure. Configure luo käännöksessä tarvittavan Makefilen. Jos configure-skriptiä ei ole, kokeile komentoja make config ja/tai make menuconfig. Jos mistään ei tapahdu mitään, katso olisiko hakemistossa install.sh-tyylistä skriptiä. Jos on, aja se (./install.sh). Osassa ohjelmapaketteja saattaa myös olla Makefile valmiina, jolloin configurea ei ole, eikä sitä tarvitse ajaa.
  6. Jos configure-skripti ei mene kunnialla läpi, on syy usein puuttuvissa kehityskirjastoissa eli headereissa (skripti mainitsee jonkin tietyn riippuvaisuuden puuttuvan). Nämä löytyvät paketinhallinnan kautta yleensä päätteellä -devel tai -dev (esimerkiksi gimp-devel, pääte vaihtelee jakeluittain). Tilan säästämiseksi useimpien ohjelmien paketointien mukana ei toimiteta niiden kehityskirjastoja, vaan nämä on asennettava erillisestä paketista. Joskus ongelmana voi myös olla se, ettei configure löydä tarvittavaa riippuvaisuutta vaikka se ja sen kehityskirjastot olisi asennettu. Tällöin niiden sijainti on yleensä mahdollista määritellä erillisellä valitsimella. Lisätietoja valitsimista saa komennolla ./configure --help. Myös INSTALL- tai README-tiedostoissa on usein mainittu asiasta jotakin. Debian-pohjaisissa jakeluissa kehityskirjastot on yleensä helppo asentaa komennolla apt-get build-dep ohjelma.
  7. Käännä ohjelma komennolla make. Käännön aikana ruutuun tulostuu yleensä runsaasti tietoa käännön etenemisestä. Jos make-komento ei mene läpi, vaan pysähtyy ilmoittaen virheestä jollakin rivillä, on lähdekoodissa todennäköisesti vikaa. Yleensä kyse on lähdekoodin epäyhteensopivuudesta käytetyn kääntäjäversion kanssa. Virheilmoituksen perusteella saattaa olla mahdollista helpostikin korjata virhe. Muussa tapauksessa kannattaa lähettää palautetta ohjelman kehittäjälle.
  8. Siirry pääkäyttäjäksi komennolla su ja asenna ohjelma komennolla make install. Tämä kopioi käännetyt binäärit lopulliseen asennushakemistoonsa. Mikäli sinulla ei ole tarvittavia oikeuksia, voit toki käyttää ohjelmaa myös lähdekoodihakemistosta käsin tai määrittää sopivan asennuspolun esimerkiksi kotihakemistostasi. Tämä tapahtuu configuren valitsimella --prefix, esimerkiksi --prefix=/home/kayttaja/hyvasofta.

Joskus Makefilessä on myös uninstall-toiminto, jolla ohjelma poisto onnistuu kätevästi komennolla make uninstall. Huomaa kuitenkin, että mikäli esimerkiksi poistat näin jonkin kirjaston, sitä käyttävät ohjelmat lakkaavat toimimasta. Jos jostain syystä haluat kääntää ohjelman uudelleen, voit poistaa luodut binäärit ja Makefilen lähdekoodihakemistosta komennolla make clean.

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, vaan tilalle tulee jakelun omat paketinluomis- ja asennuskomennot. Katso esimerkiksi CheckInstall sekä Deb-paketin tekeminen.