Programmide portimine

Allikas: Kuutõrvaja

[Tekst on kirjutatud FreeBSD-d silmas pidades, aga üldjoontes klapib kõigega]

Avatud lähtekoodidega maailmas võib juhtuda, et sinu opsüsteemile ei ole binaarpakki mingist vajalikust programmist. Ja portsudest ei pruugi ka asja olla.

Heal juhul kompileerub asi esimese katsega. Veidi halvemal juhul on vaja ./configure skriptile mõned parameetrid kaasa anda.

Veel halvemal juhul hakkab kompilaator protesteerima.

Siis tuleks vaadata rahulikult veateateid.

  • Kõige lihtsamal juhul vingutakse puuduva .h faili pärast. Kui puudu on fail, mis üsna kindlasti peaks süsteemis olemas olema( GL/gl.h; jpeg.h; jne), siis võib põhjuseks olla see, et mõned ./configured ei tea, et FreeBSD hoiab asju /usr/local kataloogis. Kõige lihtsam on käivitada ./configure nõnda:
./configure CPPFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib
  • Mõnikord vajatakse mingeid linux/* headereid. Nendega on FreeBSDs juba raskem. Mõnedele neist on analoogid, mõnedele neist ei ole... [vot siia tuleks veel juttu (joystick ühes ja teises, ioctl ühes ja teises jne)]
  • Teinekord on kompilaator liiga uus / liiga vana / liiga mittestandartne / jne. [siia ka veel juurde]
  • Linkimisel protesteeritakse puuduva -ldl pärast. Asi on selles, et dünaamilise linkimise funktsioonide jaoks on Linuxis vaja linkida külge -ldl, aga FreeBSD on need funktsioonid juba standardteegis sees. Sellest takistusest möödasaamiseks on vaja minna kataloogi, kus viga esines ja sealses Makefiles koristada ära kõik -ldl esinemised
  • Vahel tekivad kompileerimisel hoiatused, aga gcc loeb neid vigadena ja peatab kompilatsiooni. Sel juhul on Makefilest vaja ära koristada kõik -Werror esinemised.

[paar sõna sconsi kohta]