블로그 글 다시 진행합니다.

잃어버린 자료도 다시 찾았고, 다른 연계자료도 어느 정도 정리가 되었기 때문에 일하는 거 외에도 여러모로 다시 진행할 겁니다.

그냥 C만 쭉 올리기 하면 심심할 거 같기도 하니 ncurses도 엮어서 올려보려고 합니다. 할 줄 아는 사람도 거의 적어졌고, 자료도 오래되어서 보기 힘든 게 많은지라 제 글씨체처럼 쉽게 쉽게 써보려고 합니다.

그리고 다른 언어도 하나 더 해보려고요. 쉽게쉽게 할 수 있는 언어를 보여드리겠습니다. ㅇㅂㅇ

Advertisements

ncurses 02 – 우분투에 ncurses 개발 환경 설치하기

왜 우분투인지는 더 이상 설명하지 않겠습니다. 제가 쓰는 환경이 주분투(우분투 + xfce)일 뿐입니다.

게다가 제가 이전 글에서 말했듯, 좋은 환경 필요 없습니다. 터미널 접속만 잘 되면 됩니다. 전 당연히 ssh로 작성할 것입니다.

그래서 제 개발 환경을 보여드리고 시작해야 할 거 같군요.

스크린샷 2017-10-06 오후 3.13.01.png

맥에서 ssh로 접속하였습니다. 제 바이오는 여러모로 활약하는 좋은 개발머신입니다. 성능도 그렇게 좋은 것은 아닙니다만, 아무 문제 없는 작업 성능을 보여주고 있습니다.

스크린샷 2017-10-06 오후 3.38.14.png

이제 설치할 것들이 셋 있는데, 바로 build-essential, libncurses-dev, libncursesw5-dev 입니다. 왜 이것들이 필요한지 알려드리겠습니다.

  • build-essential: ncurses 라이브러리들을 빌드하여 설치할 때 필요함.
  • libncurses-dev: ncurses 라이브러리들. 시스템 전역에서 이용할 수 있도록 되어 있는 라이브러리다.
  • libncursesw5-dev: 확장 라이브러리. 이걸 이용하면 한국어와 같은 멀티바이트 환경을 이용할 수 있다. (한국어 입출력이 가능함)

전 리눅스 커널을 주로 만지다보니 커널 설정할 때 이미 ncurses를 쓰고 있어서 위에 두 라이브러리가 이미 설치가 되어 있습니다만, 아래의 라이브러리는 설치가 되어 있지 않습니다. 그래서 설치를 진행하면 이미 설치되어 있기도 합니다만, 혹시 모르니 저 셋을 다 설치해줍니다.

스크린샷 2017-10-06 오후 3.13.39스크린샷 2017-10-06 오후 3.15.00

설치할 때, 뒤에 5 버전을 따로 안적어주면 기본으로 5로 설치해줍니다. 패키지 관리자에 매핑되어 있는 버전이 저 버전인지라 그냥 그대로 설치해주는데, 아무 문제 없이 이용할 수 있습니다.

공식문서나 HOWTO에는 보면 소스코드 받아서 빌드하고 뭐 하고 하는데, 일단은 편하게 이용할 수 있는 환경에서 써보는 걸 우선적으로 해보겠습니다.

ncurses 01 – ncurses 프로그래밍이란?

전에 작업하던 C언어 내용과는 별개로 재미를 붙이기 위해서라도 좀 해야 할 거 같아서 추가로 시작해봅니다. ㅇㅂㅇ

일전에 DOS를 사용하던 분들은 아시겠지만, MC(Midnight Commander)라는 것을 이용하여 콘솔 화면에서도 GUI 처럼 화면을 이리저리 보여주고 방향키로 선택 커서를 옮겨 다니고, 화면에 단축키 처리를 할 수 있던 녀석이 기억 나실지 모르겠습니다. 도스 환경에서는 MDrill, 좀 근래에 썼던 사람들은 mdir이라고 아실텐지… (나이 인증 아닙니다.)

mc-panels.png

이런 비슷한 녀석이요.

당연히 터미널 시스템에서 텍스트 기반으로 쓰던 시스템 환경에서도 화면에 보이는 기술이 중요하다는 것을 알고 있기 때문에, 이런 기반의 기술을 내놓게 됩니다. 바로 Unix System V ver 4.0에 있던 curses라는 기능입니다. 이 기능을 GNU에서 공개해서 어디서든 쓸 수 있도록 한 것이 바로 ncurses입니다.

즉, ncurses 는 콘솔 화면에서 사용자가 이용하기 쉽도록 사용자 친화적인 콘솔 윈도우 화면을 만드는 데 이용되는 라이브러리입니다. 메뉴 바를 제어하거나, 키보드 입력을 돕거나, 윈도우를 띄워주는 그런 기능들을 합니다.

당연히 이런 기능들을 쉽게 이용할 수 있도록 라이브러리화 되어 있고, 함수로도 구현되어 있기 때문에 적절하게 사용하면 됩니다. 그렇다고 해서 뭐 그렇게 큰 환경이 필요한 게 아닙니다. 터미널로 접속 가능한 리눅스만 있으면 충분히 가능합니다.

C언어를 진행하다 보면 지속적으로 물어보는 것이 “이거 어떻게 써요?” 하는 겁니다. 리눅스 시스템 프로그래밍 하는 건 어느 정도 알겠고, 입출력 하는 프로그램이야 당연히 알겠고, 장치 드라이버 짜는 것까지는 알겠는데, 더 이상 어떻게 쓸 곳 없냐고 물어보더군요. 그래서 C 언어를 리눅스에서 프로그래밍하는 것과는 별개의 과정으로 이 과정 또한 조금씩 다뤄보려 합니다. C를 할 줄 안다면 어렵지 않습니다. 오히려 더 좋은 길잡이가 될 수 있으면 좋겠군요.