gcc에서 컴파일 할때는 preprocessing을 거친 후 어셈 파일로 바뀌고 다시 오브젝트 파일로 바뀌게 됩니다.
중간에 어셈파일로 바뀔때는 $TMPDIR로 설정된 디렉토리에 임시로 어셈 파일을 쓰게 되는데 gcc의 -pipe 옵션을 사용하면 디스크 access없이 파이프를 걸쳐 오브젝트로 만들기 때문에 컴파일 속도가 빨라지게 됩니다. 그리고 http://ccache.samba.org의 컴파일러 캐쉬를 이용하면 속도는 비약적으로 빨라지게 됩니다.
컴파일을 디스크가 아닌 램디스크에서 하면 당연히 속도가 빨라지게 됩니다. 단순히 화면 출력정도가지고는 시스템 IO에 영향이 거의 없다고 보셔도 됩니다.
-j 옵션의 경우 job을 분산시키겠다는 옵션이므로 뒤에 인자를 넣어 사용하시면 됩니다.
단, single CPU의 경우 효과를 볼 수 없다고 보셔야 합니다. 이유는 알죠?
단, single CPU의 경우 효과를 볼 수 없다고 보셔야 합니다. 이유는 알죠?
make에서 거의 모든 것은 Makefile내부에서 모두 지정을 할 수 있다. 그중 일부를 make의 실행 시에 옵션으로 통해서 줄 수도 있다. 수많은 옵션중에서 기억해 둘 만한 것 몇 가지만 소개하기로 한다.
-C dir
위에서도 밝혔듯이 Makefile을 계속 읽지 말고 우선은 dir로 이동하라는 것이다. 순환 make에 사용된다.
-d
Makefile을 수행하면서 각종 정보를 모조리 출력해 준다. (-debug) 출력량이 장난이 아님... 결과를 파일로 저장해서 읽어보면 make 의 동작을 대충 이해할 수 있다.
-h
옵션에 관한 도움말을 출력한다. (-help)
-f file
file 에 해당하는 파일을 Makefile로 써 취급한다. (-file)
-r
내장하고 있는 각종 규칙(Suffix rule 등)을 없는 것으로 (-no-builtin-rules)간주한다. 따라서 사용자가 규칙을 새롭게 정의해 주어야 한다.
-t
파일의 생성 날짜를 현재 시간으로 갱신한다. (-touch)
-v
make의 버전을 출력한다. (전 GNU make 3.73 을 씁니다.) (-version)
-p
make에서 내부적으로 세팅되어 있는 값들을 출력한다. (-print-data-base)
-k
make는 에러가 발생하면 도중에 실행을 포기하게 되는데 (-keep-going) -k 는 에러가 나더라도 멈추지 말고 계속 진행하라는 뜻