다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

10.5 호환성있는 조건부 컴파일 (Portable conditional compilation)

리눅스로 포팅하기 위해 존재하는 코드를 수정해야할 필요가 있다면, Linux-specific 코드 부분을 둘러싸기위해 ifdef...endif 쌍을 사용할 필요가 있을런지 모른다. -- 또는, 실제로, 다른 구현들과 연관된 코드. 컴파일된 코드의 부분들을 선택에 대해 실제 표준은 운영체제 존재에 기초하지 않지만, 많은 프로그램은 시스템 V 코드를 위한 SVR4, BSD 코드를 위한 BSD와 Linux- specific 코드를 위한 linux 정의(defining)같은 규정을 사용한다.

리눅스에 의해 사용되는 GNU C 라이브러리는 컴파일 때 다양한 매크로들의 정의에 의해 라이브러리의 다양한 특징들을 on 시킬 수 있도록 허락한다. 그것들은 다음과 같다.:

_BSD_SOURCE로 정의하면, 부가적인 정의 _FAVOR_BSD는 라이브러리를 위해 정의되어질 것이다. 이것은 POSIX나 SVR4을 통해 선택된 어떤 것에 대해 BSD 행동을 야기시킬 것이다. 예를 들어, _FAVOR_BSD가 정의되면, setjmplongjmp가 신호 마스크를 저장할 것이고 getgrp는 PID 아규먼트를 받아들일 것이다. 이장의 앞에서 언급했던 특징들을 위해 BSD-like 행동을 얻기위해 libbsd에 대해 여전히 연결해야함을 주목하라.

리눅스에서, gcc는 자동적으로 당신의 프로그램안에서 사용할 수 있는 많은 매크로를 정의한다. 그것들은 다음과 같다.:

많은 프로그램은 Linux-specific 코드를 둘러싸기 위해 #ifdef linux를 사용한다. 이러한 compile-time 매크로들을 사용하여 존재하는 코드에 리눅스로 프로그램을 포팅하기 위해 필요따른 변화들을 쉽게 포함(include)하거나 배제(exclude)할 수 있다. 일반적으로 리눅스가 더 많은 시스템 V-like 특징들을 지원하기 때문에 시스템 V 또는 BSD를 위하여 작성된 프로그램으로 부터 기본적으로 시작하려면 최선의 코드는 아마도 시스템 V 버전일 것이다.


이전:10.4.3 리눅스에서의 프로세스 통제 다음:10.6 부가적인 주석문

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Dec 19,1997
Created Dec 19,1997