[공유] C 언어 컴파일러 선택을 고민하시는 분들...
C 컴파일러를 어떤 것을 써야 될까요?" 라고 물어본 사람은 없지만, 간혹 "C언어 공부를 하고 싶은데 뭐 부터 해야하나요?"라는 질문을 본 적이 있습니다. 이런 예기가 나오는 이유가 C#이면 Visual Studio, Java면 Eclipse (요즘은 Intelli J도 쓰는 듯), 안드로이드 프로그래밍하려면 Android Studio. 이런 것 처럼 공식적인 또는 공식적인 급(?)에 해당하는 개발툴이 없어서 일 듯 합니다.
그래서 생각난 김에 경우에 따라 개발툴 선택을 할 수 있는 가이드를 제공합니다. 이건 제 개인적인 견해이므로 참고하시고 판단은 스스로 하셔야 합니다.
1. C언어에 대해서 제대로 한 번 배워보겠다. 툴 설치는 구글신이 있으므로 문제 아니다 하시는 분.
통합 개발 환경은 쓰지 말고, 텍스트 에디터, 컴파일러, 링커등을 직접 다뤄 보세요. "깐깐하게 배우는 C", 책이름인데 제 기억이 맞을 겁니다. 이 책에서 제가 말한 것 같이 나옵니다. 한발 더 나아가서 아예 이번 기회에 리눅스도 공부할 겸해서 리눅스에서 공부하라고 합니다. 우선 Visual Studio 에서 C언어에 대한 지원을 소극적으로 하고 있습니다. C++와 겹치는 표준안에 대해서만 업그레이드를 하겠다고 아예 공식적으로 말한 상태입니다. 리눅스에 포함된 GCC를 이용한 C언어 학습은 초기에 고급 언어를 이용한 개발이 어떠했는지부터 알 수 있고, 더 흥미가 생겨 커널 분석까지도 나갈 수 있는 좋은 기회입니다. 그리고 GCC가 Visual Studio보다 표준을 더 많이 지원합니다. 추가로 C언어 표준에 대해서 더 확실히 학습하고 싶으시면, GCC 버전8 이상을 사용하시거나 Pelles C 9.00을 설치해서 사용해보세요. C17 표준까지 지원하는 컴파일러입니다. Pelles C의 경우 8.0 버전에서는 C11를 완벽히 지원한다는 문구가 있었는데 이번 9.0 버전에서는 새로 C17 표준을 지원한다고 되어 있군요. 어느 정도 수준인지는 확인이 필요할 듯 합니다.
2. 나는 하드웨어 전공이고 MCU 제어는 하겠지만 임베디드 리눅스 이런 수준은 관심 없다.
Visual Studio를 이용한 공부는 권장하지 않습니다. OS가 없는 MCU 분야는 PC와 다르게 사막과 같은 척박한 환경입니다. Visual Studio와 같은 툴은 아예 꿈도 안꾸는 것이 좋습니다. 함수에 대한 설명은 함수명과 인자, 리턴 값 표시가 다입니다. 간혹 그것도 없어서 헤더 파일 분석해서 할 때도 있습니다. 표준 함수가 있지 않냐고 하시겠지만, 표준 함수 쓸 일이 생각만큼 많지 않다는 걸 아실 겁니다. 거기다 MCU가 바뀔때 마다 개발툴도 같이 바뀝니다. 다니는 회사 대표가 통이커서 MCU가 바뀔 때마다 수백만원하는 IAR 컴파일러를 사준다면 조금 이질감이 덜할 수는 있습니다. 요즘은 그런 경우가 적어졌지만, 최신 운영체제인 윈도우10에서 안될 가능성도 열어두고 있어야 합니다. 저는 윈도우98을 한창 사용하던 시절에 MS-DOS 6.0 설치해서 작업한 적도 있습니다.
그러면 어떠한 환경이 좋냐면, Eclipse 환경에서 해보시기를 권합니다. 최근에는 MCU 제조사에서 무료로 개발툴을 제공하고 있는 추세로 바뀌고 있고, 주로 Eclipse 환경을 기반으로 사용하고 있습니다. 이 툴로 준비 운동하시고 Atmel Studio와 같은 툴도 써보면 좋습니다. 흥미가 있으면 1번과 같이도 해보십시오. 최소한 linker script 수정 정도는 할 줄 알아야 합니다.
3. 하드웨어까지는 하고 싶은 생각 없고 그냥 임베디드 프로그래밍에 관심 있다.
현재의 상황을 보면, C++ & QT를 많이 사용하는 것으로 보입니다. Visual Studio에서 공부하시고, 시간되면 C++도 공부하고 QT도 사용해보시고, 여기 카페 고수분들이 말씀하시는 것을 공부해보십시오. 예전과 다르게 C++로 개발하게 될 경우가 많을 겁니다. 단, 임베디드 분야 개발 특성상 개발툴 변경에 대한 거부감을 없애야 합니다. 다른 툴도 사용해보세요.
4. 나는 아무생각 없다, 또는 학점만 따면 된다.
그냥 아무생각 없이 Visual Studio 설치하시면 됩니다. 혹시 학교에서 개발툴을 지정해줬으면 그거 설치하면 됩니다. 그리고 학점 따고, 기쁜 마음으로 지워버리면 됩니다. Visual Studio 2017 부터는 인스톨러 프로그램이 별도로 있어서, 예전과 다르게 클린 설치 수준으로 깔끔하게 지워 줍니다. 그런 후에 원래 하고 싶은 공부 또는 놀이 열심히 하시면 됩니다. 인생은 아무도 모릅니다. C언어 못한다고 루저 아닙니다. 문재인 대통령도 C언어 못합니다. (아마도...)
그래도 예의상 카페에 문제 풀어주세요, 과제 도와주세요. 이런 건 올리지 말기를 부탁합니다.
2019년 1월 25일 추가 :
5. 개발툴 자체만 생각하면서 고민하시는 분들
댓글을 작성해보세요.