5. 개발 방법

이에 관한 내용들 중 대부분은 리눅스뿐만 아니라 다른 유닉스에서도 이식 가능하도록 프로그램을 작성하는 것과 관련이 있다. 다른 유닉스에 이식 가능하게 하는 것이 단지 전문가적인 훌륭한 형식이나 해커주의 때문은 아 니다. 그것은 리눅스 스스로 미래의 변화에 대비하기 위한 것으로 가치가 있다.

궁극적으로, 다른 사람이 당신의 코드를 리눅스가 아닌 곳에서 사용하려고 한다면, 이식성은 당신이 받게 될 성가시고 난처한 메일의 숫자를 최소한으로 줄여줄 것이다.

5.1. ANSI C나 이식가능한 스크립트 언어로 작성해라

이식성과 안정성을 위해 ANSI C나 이식 가능한 스크립트 언어로 작성해야 한다. 왜냐하면 다른 플랫폼에서의 실행을 위해서이다.

스크립트 언어로 적당한 것은 Python, Perl, Tcl, 그리고 Emacs, Lisp, PHP등 이다. 단순한 구식 shell은 적당하지 않다. 왜냐하면, 미묘한 특성에 따라 매우 다양한 구현상의 차이가 있을 뿐만 아니라, shell alias와 같은 사용자의 환경설정 변화에도 영향을 받기 때문이다.

자바는 이식성 있는 언어라고 믿어지지만 리눅스상에서 유용할 만큼 구현되지 않았고 리눅스 시스템과의 통합성도 부족하다. 자바의 성장으로 날로 인기가 높아지지만 자바는 여전히 힘든 선택이다.

5.2. C를 이식성있게 사용해라

C로 프로그램을 작성하는 경우 ANSI C의 모든 규정(모듈간의 불일치를 알수 있도록 도와주는 함수 프로타입을 포함한)을 사용하면 된다. 구식의 K&R 은 이미 한물 간 컴파일러이다.

반면에, GCC-specific 규정(`-pipe' 옵션과 같은)또는 nested 함수가 적용 가능할 것이라고 추측하지는 마라. 이것들은 갑자기 나타나서 리눅스나 GCC를 사용하지 않는 시스템에 이식하려는 사람으로 하여금 당신을 괴롭히게 할것이다.

5.3. autoconf/automake/autoheader 사용해라

C를 사용해서 프로그램을 작성한다면, 이식성과 시스템 환경설정 그리고 Makefile의 적용을 위해� autoconf/automake/autoheader를 사용해라. 요즘 소스를 이용하여 소프트웨어를 설치하려고 하는 사용자는 "configure; make"라고 치면 깨끗하게 프로그램이 만들어지기를 바란다. 그리고 그렇게 되어야 한다.

5.4. 공개하기전에 코드가 온전한지 검사해라

C로 프로그램을 작성한다면, 공개하기 전에 최소한 한번이라도 `-Wall' 옵션을 사용하여 컴파일 해보고 오류를 제거해야 한다. 이렇게 하면 매우 많은 오류를 발견할 수 있다. 철저하게 `-pedantic' 옵션을 사용해 컴파일하는 것도 좋은 방법이다.

Perl을 사용하였다면 공개 전에 'perl -c'(해당된다면 'perl -T'), 그리고 'perl -w'를 사용해서 아주 세심하게 코드를 검사해야 한다.(Perl에 관한 문서를 참고해라.)

5.5. 공개하기전에 문서와 README 파일이 온전한지 검사해라

문서를 철자 검사기로 검사해라. 만약, 철자법도 모르는 것처럼 보인다면, 사람들은 당신의 코드도 부주의하고 변변치 않은 것으로 판단할 것이다.