next up previous contents
Next: Dodatkowe uwagi Up: Przenoszenie aplikacji do Linuxa Previous: Kontrola procesów pod Linuxem   Contents

Przenośna warunkowa kompilacja

Jeżeli musisz zmodyfikować istniejący kod w celu przeniesienia go do Linuxa możesz użyć parę ifdef...endif aby wyodrębnić specyficzne dla Linuxa części, lub kod odpowiadający innym systemom. Część programów używa pewnych konwencji co do oddzielania kodu definicjami: SVR4 dla kodu pod System V, BSD dla kodu BSD i linux dla kodu pod Linuxa.

Biblioteka GNU C używana przez Linuxa pozwala ci na włączenie różnych opcji poprzez zdefiniowanie makr:

Jeżeli zdefiniujesz _BSD_SOURCE i dodatkowo zostanie zdefiniowana _FAVOR_BSD spowoduje ona, iż cechy POSIX i SVR4 zostaną przesłonięte przez BSD. Dla przykładu: jeżeli zdefiniowano _FAVOR_BSD setjmp i longjmp będą zachowywać i odtwarzać maskę sygnału, getpgrp będzie akceptował jako argument PID. Zauważ, iż nadal musisz zlinkować program z biblioteką libbsd aby otrzymać działanie podobne do BSD dla rzeczy, o których było mowa wcześniej.

Pod Linuxem gcc definiuje parę makr automatycznie, a ty możesz je używać. Oto one:

Wiele programów używa
     #ifdef linux
   
aby wyodrębnić kod pod Linuxa. Używając tych makr możesz łatwo zaadaptować istniejący kod aby kompilował się pod Linuxem. Pamiętaj, iż Linux zawiera więcej cech z System V, więc mając kod pod SVR4 i BSD najlepiej startować z kodu dla System V. Alternatywnie, możesz rozpocząć z kodu dla BSD i zlinkować program z libbsd.


next up previous contents
Next: Dodatkowe uwagi Up: Przenoszenie aplikacji do Linuxa Previous: Kontrola procesów pod Linuxem   Contents

2000-03-01


Poltronic