이 문서는 multi platform 에서 해당 platform 에 맞는 build 를 하기 위한 howto 만을 제공하고 있다. 하지만 앞에서 잠깐 이야기했듯이 autotools 을 미시적인 범위까지 사용하면서, config.h 를 효과적으로 사용한다면 하나의 code 를 얼마든지 다르게 build 할 수 있다.
예를 들어 앞장의 configure.ac 를 볼때,
AC_CHECK_FUNCS(strcpy bcopy) |
라는 부분이 있다. 이 macro 를 실행하고 나면 config.h 에 현재 configure 가 일어난 system에 strcpy, bcopy 라는 함수가 있는지 없는지에 대한 기록이 남게 된다.따라서 개발자가 미리 혹시나 strcpy 나 bcopy 를 가지고 있지 않는 system에 대한 처리를 해줄수가 있다.
config.h 의 내용
#define HAVE_BCOPY 1 |
strcpy 를 사용하는 code 시작 부분 혹은 그 code 가 include 하는 header file
#if !HAVE_STRCPY # if HAVE_BCOPY # define strcpy(dest,src) bcopy(src, dest, 1+strlen(src)) # else error no strcpy or bcopy # endif #endif |
위처럼 하면 strcpy 를 가지고 있지 않은 machine 에 대해 이를 bcopy 를 이용해 구현할 수 있게 해줄 수 있다. 즉 작은 범위에까지 잘 이용한다면 완벽히 system independent 한 code 를 만들 수 있게된다.