강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

[연재잡담-05] NAZU의 리눅스안의 도서관들 (GPL)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문



[연재잡담-05] NAZU의 리눅스안의 도서관들 (GPL)

또 하루가 지나갔네요..
여러분은 주말을 어떻게 지내셨는지요 ^^?

보통 주말에는 NAZU도 인간인지라 쉽니다.
혼자 영화도 보고, 음악도 듣고, 잡담도 쓰고, 낮잠도 자구..
이전엔 카드(라이더)도 달렸는데, 세달 쉬었더만 아는 분들이 없네요 ^^;;
무선랜이 렉이심해서 요즘엔 거의 메신질만 하고 있답니다.
카드도 이젠 오(디)션에 밀려서 시들시들해 지는 듯..
(그대빈자리 <== 닉넴 이쁘지 않나요^^? 물론 제가 지은게 아니라능..)
(군대가있는 착한 남동생꺼 빌려서 씁니다. +ㅁ+;;)
(물론 친동생은 아니지만, 정말 착하고 편한 동생이기에.. 아잉ㅋ_ㅋ)
오늘은 날씨가 따뜻하길레 밖에 나갔다왔습니다.

오랜만에 선배님과 샤브샤브 부폐에서 외식도 하고,
(요즘 배가 나오는거 같아서 다여트중인데~ 자꾸 먹어대서 큰일입니다.)
(아! 오해는 마시기 바랍니다. 그래두 아직까진 퀸싸이즈라 불립니다.)
호숫가를 끼고있는 공원 주위를 자전거도 타보고,
공원에서 뭔가 행사를 하기에 간간히 구경도 하고..
그림 그리시는 분이 계시길레 잠깐씩 그분 뒤에서 구경도 했었죠.
(물론, 그림을 구경했다기보다는.. 그분을 감상했겠죠 ^^?)
(무엇인가에 열정을 가지고 노력하는 그녀의 모습이 아름다웠습니다.)
아무튼 이번 주말, 단 한가지를 제외하면 행복한 NAZU였답니다. ^^;;

제가 사는 곳은 참 좋은 것 같습니다. ^^
1Km 반경안에 모든 시설이 집중된 곳이기도 하고,
가끔 사람구경(?!) 나가기에도 좋구..
특히, 나침판 하나만으로도 위치확인이 가능한..ㅋㄷ

위치확인?! 버스에서 너무 곤히 자버리는 술버릇때문입니다.
누가 업어가도 모를 정도로.. -_-;; (누가 보쌈안해가나? ㅋㄷ)
혹시 지하철이나, 버스에서 누군가 쌔근쌔근 잠자고 있다면,
내리시기전에 꼭 깨워주시는 센스~ 부탁 드립니다. 혹 NAZU일지도 -_-;;

====================================================================
1. 사전 (Is a Dictionary) : 복습 및 정형화
====================================================================

영어시간에 졸아서 철자가 맞는지는 모르겠습니다만,
아무튼 의미 전달만되면 되는거 아닙니까^^? 잡담인데~
(가끔 너무 무성의해 보일때도 있지만, 진짜 무성의 한건 아닐듯^^!)

도서관에 들어가기 전에 일단, 사전에 대해서 알아봅시다.

사전? 하니깐 생각나는게..
어떤 분께서 온라인사전을 vi에디터에 연결시키는 팁을
어디엔가 올려놓았던 것 같습니다만^^? (kltp였던것 같습니다만)
보통 거의 안쓰니깐, 필요하신분들만 가서 검색해보세요..
즉, 그냥 재미로 Ok ^^?

자~ 그럼.. 오늘의 사전이란 단어에 대해서, 잠시 돌이켜봅시다.
"돌이켜봅시다?! 언제 우리 한적있어?"하며 의아해 하시는 분들이
분명히 계실거라고 생각이 드네요 ^^? 그쵸?

linux에서 사전이 될만한 것들 3가지가 있었습니다.
뭐였죠^^? 메뉴얼~ 하면 생각나실듯 ^^?

Man Page, Infomation, Help 3가지였지요^^?
명령어를 사용하기 위해 쓰는 일종의 사전이라고 볼수 있습니다.
명령어뿐만아니라 시스템 프로그래머를 위한 도움말도 제공하고..

여러분은 사전을 얼마나 이용하시는 지요^^?
저도 필요할때 빼고는 거의 안씁니다만^^;;
명령어 하나씩 하나씩 익혀가실때마다 한번쯤은 봐주시기 바랍니다.
적어도 어떤것을 할 수 있다 없다정도는 알아두시면 도움이 되실겁니다.

자, 아무 명령어나 man 명령어를 통해서 내용을 보도록 합시다.
명령어가 생각이 아니나시는 분들을 위해서, bash의 man page를 볼까요?

콘솔에서 man bash [엔터키]를 치시면, 메뉴얼 페이지가 뜹니다.

맨 윗줄을 보시면 BASH(1)이라고 되어있습니다.
그리고 중간에는 bash(GNU Bourne-Again Shell)에 대한 설명이,
맨 아래에는 more라는 명령어를 수행한 것처럼 --More--이 뜨실 것이고

맨 윗줄의 1이라는 숫자의 의미.. 중요합니다..

자, 그러면 쉽게 실습을 해보도록 합시다.
(BASH와 GCC패키지가 설치된것을 가정하도록 하겠습니다.)
(일부러 설치하지는 마세요 ^^; 개념만 아시면 되니깐요.)
1) man read [엔터키]를 쳐보세요..
2) man 2 read [엔터키]를 쳐보세요..

어떠세요? 표시되는 내용이 다르죠^^?
저 숫자를 전문용어로 섹션이라고 합니다. 단락, 구역 이라는 뜻이죠.
자, 숫자는 0~9까지가 있는데, 각각에 대해서 알아봅시다.

section 0 : 잡것들 (-_-;;)
section 1 : 일반 명령어들
section 2 : 시스템 함수 호출 규약
section 3 : 라이브러리 함수 호출 규약
section 4 : 특수 파일들 (device , network interface) 설명
section 5 : 파일 포멧과 변환
section 6 : 리눅스게임에 대한 도움말
section 7 : 매크로, 환경, 테이블등의 규약
section 8 : 시스템관리 명령어들
section 9 : 커널 루틴들

이런거 말고도 l,n,o등이 있지만, 거의 안씁니다.
현재는 0,9도 거의 안나오고, 보통 1~8까지만 씁니다.
대충, 아~ 저렇게 나눠지는구나~ 만 아시면 됩니다.
나중에 패키징하면서 직접 만들어 보도록 하겠습니다.
잡담이 쭉~ 계속된다면 ^^

info도 한번 구경해 보세요 ^^
원래는 좀더 자세한 정보를 제공하기위해 막강한 info를 만들었는데,
아직도 man page가 최고인듯... 마치 emacs보다 vi를 선호하는 것처럼..

====================================================================
2. 도서관 (Is a Library) : 개념
====================================================================

저도 가끔씩 도서관에 갑니다.
공원은 사람들 구경하러갔지만, 도서관은 좀 다르답니다.
저같은 경우 딱딱하고 두꺼운 배개를 빌리러 갑니다.
하긴 데이트하러 도서관가는 친구도 있답니다.
뭘 상상하십니까^^? 혹시, 경험?!이 있으신지요^^? ㅋㄷ
4학년이기에 취업준비를 여자친구와 같이한다는 취지에서 ^^!
백수인 저보다는 훌륭한 청년이지 않습니까^^?

아쉽게도 오늘 알아볼 도서관은 그녀 혹은 그와 함께한 도서관이 아니라,
리눅스의 library랍니다. 이름이 왜 라이브러릴까요?

도서관에 가보면 여러종류의 책들이 종류별로 분류되어 있습니다.
여러분이 책을 찾을때, 어떤 순서로 가시죠?

c 프로그래밍 책을 찾으러 간다고 가정하면,
1) "컴퓨터"라고 적혀있는 팻말을 찾고
2) "프로그래밍"이라고 붙어있는 책꽃이를 찾아서
3) c책 코너가 어디있는지 확인한 후
4) 필요하신 책을 찾아서 보실겁니다.

이처럼 규칙적으로 어떠한 것들을 만들어 미리 모아 놓은 파일,
그것을 library 파일이라고 합니다.
물론, 여러분들이 그것을 만들수도 있답니다.
가끔 편의상 규칙없이 만드시는 분도 계시답니다.

자. 그럼 어원에 대해서는 이해하셨으리라 믿고,
다음으로 종류에 대해서 알아보도록 하겠습니다.

큰 개념으로 라이브러리의 종류는 2가지로 나뉘어지죠?
1) 정적 라이브러리
2) 공유 라이브러리

- Windows Programming을 아시는 분들을 위한 설명

개념적으로 보면 다음과 같습니다. (약간의 차이는 존재합니다.)
정적 라이브러리인 .a 파일은 LIB파일과 비슷합니다.
공유 라이브러리인 .so 파일은 DLL파일과 비슷합니다.

비슷하다는 말은 차이가 존재한다는 뜻이지요^^? 도데체 차이가 뭘까요?
가장 쉬운 힌트라면,
리눅스에서는 공유 라이브러리라 부르는데
윈도우에서는 동적 라이브러리라 부른답니다.

- Windows Programming을 모르시는 분들을 위한 설명

BASH를 공부할 때, 비슷한 개념을 든적이 있습니다.
10개의 프로그램에 똑같은 내용을 타이핑 할것인지,
아니면 하나의 모듈로 뚝때서 만들어 둘 것인지에 대해서
하나의 모듈로 뚝때서 필요할때 호출하는 방식,
그것이 바로 라이브러리의 개념과 일치합니다.

a. 정적 라이브러리인 .a 파일은 컴파일시 포함되는 것을 뜻합니다.
(즉, Ctrl + C, Ctrl + V를 컴파일러가 해줬다고 생각하세요)
b. 공유 라이브러리인 .so 파일은 모듈을 바로 호출했다고 이해하세요.
(모듈화 시켜놓은 파일을 실행한다고 생각하시면 됩니다.)

자~ 그러면 한번 생각해 보시기 바랍니다.
1) 라이브러리의 장점은?
2) 2가지 라이버러리의 차이점과 장단점은?
3) 지난 연재잡담의 ldd가 의미하는 바는 뭐였을까?

- 고급 프로그래머를 위하여 (심플한 한줄)
프로그램 옵션을 통한 플러그인 제어?!
이해하셨으리라 믿습니다. ^^

====================================================================
3. 마치며
====================================================================

조금씩 천천히 리눅스에 다가가면서,
조금씩 내용이 딱딱해져만 가는듯 싶어서 서운한 NAZU랍니다.
강좌란에 대한 압박때문일지도 -_-;;

너무 천천히 가는게 아닌가 우려하시는 분도 계실텐데..

연재가 100회분이고 보통 3시간 ~ 5시간 작업합니다.
아무리 백수라해도 사생활은 있는 법!! <== 존중해주셈~ ^^*

또한 지금 당장 리눅스에대해 자세히 아시려는 분들이 아니라
1년후쯤 시작하시는 분들을 대상
으로 하는 연재잡담이랍니다.

물론 가끔씩 뭔가를 툭툭 지나가듯이 던져드리는데,
(방법, 컨셉, 로직, 새로운 정보 등)
잘 낚으시는 분들도 필시 계실겁니다. ^^

요즘은 초보자 분들도 쉽게 보실수 있도록 만드느라 애좀 먹죠..^^;;
특히, 앞뒤의 연관관계를 살려드리는 커리큘럼이기에..
(bash의 모듈화와 library를 연관시켜 설명해드리는 센스~)
(어느분께서 생각이라도 해보셨겠습니까^^? 이것이 바로 NAZU랍니다.)

잡담을 천천히 지켜봐주시면서,
명령어, 어드민, 기타 여러파트를 계속적으로 공부하세요.
누구나 관심갖는 부분은 과감히 생략해 버리는 NAZU랍니다.

====================================================================
4. 차회 예고
====================================================================

[연재잡담-06] NAZU의 GCC vs gcc
6회부터는 GCC 관련 파트를 다룰 예정입니다.(딱딱해질듯 -_-;;)
물론, GCC만 다루는것은 아니랍니다. ^^

[연재잡담-20] ~
배포판 빌딩을 위한 기초를 닦아 볼 예정입니다.

[연재잡담-40] ~
실제 배포판의 빌딩을 연재할 예정입니다.
주) 물론, NAZU는 여건상 실습 못합니다. -_-a 실습할 컴터음써염 ㅠ_ㅠ
혹시 누가 시키면 -_-a 할지도 모르겠습니다.

[연재잡담-50] ~
아직 안정해졌습니다. 아마 앞으로도 안정해 질것입니다.
그래도 잡담은 계속적으로 올라올겁니다. 순서가 없는것들이기에..
연재잡담-01을 보셨던 분들은 대충 짐작하셨으리라 생각됩니다.
특별한 프로젝트들에 대한 설명이 50회 연재될 것입니다.
물론, 리눅스만은 아닐것입니다. ^^


관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,850 개
  • 현재 접속자 :  116 명