Daarbij is het verschil tussen de diverse unix varianten nog veel groter als tussen de diverse linux varianten. Hierbij moet zelfs gedacht worden aan het al dan niet bestaan of anders heten van functies. Hierbij gaat het vaak over zaken die te maken hebben met system calls. Een berucht voorbeeld hiervan is file locking waarvan 2 varianten bestaan.
Natuurlijk zijn er ook nog een aantal manieren waarop het systeem
ingericht is die van belang kunnen zijn. Hierbij moet je denken aan
werken met een shadow passwoordfile of juis met nis als alternatief
voor een gewoon passwoordfile.
Een methode
Om al deze code op te vangen zijn er diverse manieren waarop de
code portable te houden. Vaak wordt daar gebruik gemaakt van diverse
#ifdef
constructies en macro's. Voor de rest moeten
in de makefiles alle paden en libries aangepast worden.
Om dit te vergemakelijke is er gnu configure. Dit is een packet
dat allerlie testen uit voert om te kijken hoe het systeem zich
gedraagt. Hierna genereerd hij de makefiles en een config.h.
Het gebruik van configure
Je kunt configure gebruiken door in de source directory
"./configure" te draaien. Hierna krijg je te zien
wat er getest wordt en hoe configure er over denkt.
Een paar voorbeelden van de output van ./configure
op
de gnu hello source.
creating cache ./config.cache checking for a BSD compatible install... /usr/bin/install -c ... checking for opendir in -ldir... no ... checking for sys/param.h... yes checking for getcwd... yes ... creating po/Makefile.in creating Makefile creating config.hWe zien dat hij begint met het creeeren van een file waar hij de resultaten in op slaat. Daarna test hij een aantal zaken betreffende programma's, libaries, header files en functies. Daarna genereerd hij de makefiles en het config.h file.
--bindir=/usr/local/bin
. Hiermee
worden de programma's geinstaleerd in "/usr/local/bin".
Vaak kun je ook opties aan of uitzetten met --enable-OPTIE
en --disable-OPTIE
.
Uiteraard is dit voor ieder programma dus gelukig is er ook een optie
--help
die de opties toont.
Imake
Voor X programatuur wordt vaak een afwijkende manier gebruikt van
het genereren van makefiles. Daar wordt gebruik gemaakt van imake.
Dit systeem werkt via een Imakefile waaruit met behulp van locale
templates de makefiles gegenereerd worden.
In plaats van het runnen van ./configure
gebruik je in
dat geval xmkmf -a
. Die genereerd dan de makefiles in
deze directorie en de subdirectories. Daarna draait hij overal make depend
zodat de dependicies ook goed staan.
Het resultaat
Als het goed is kun je naar beide acties gewoon make install
aanroepen waarna het systeem alles compileerd en daarna instaleerd.