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

[연재잡담-06] NAZU의 GCC vs gcc (1:개념편) (GPL)

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문



방금 연재잡담-05를 올리고 다시 06편을 손에 잡게 되었습니다.
특별한 이슈가 없는 한 일주일에 3편정도 올리는것 같습니다. -_-;;
현재도 그 이슈때문에 고민중입니다. 한주정도 깊이 검토했으나..
아직도 확답하기 힘든 고민이랍니다. -_-a
그렇다고 백수에서 취업하는건 아니고..ㅋ_ㅋ
(취직하면 여자친구 생기려나? -_-a 함해봐? ^^?)

NAZU라는 녀석, 보기보단 착한가요?
그렇다면, 궁둥이 한번씩 토닥여주세요.ㅋㄷ
-_-a 농담입니다. 차라리 cygnus를 ㅡㅡ;; 쿨럭..;; 더쌨나 -_-;;

-_-a 하긴, 연재핑계대고 댓글도 안달아드리는데.. ㅡㅡ;;
그러고보니, 연재하다 귀차니즘에 젖어서 어디론가 텨버릴지도..ㅡ.ㅡ;;
이러다가 튀어버린다면 아마도 선배님께서 한소리 하실듯..
( 잡히면 뒤진다잉~ -_-;; 슬마~ ㅋ_ㅋ 얘들아~ 툐~~ @@@@@@@(;;-_-) )

P.S. 여담

실제로, 선배님께서는 제게 후배님이라고 하십니다..
부담 200%라고 해야하나.. -_-;; 짤있나요? 100회까지 열쉬미 써야죠..;;

100회 끝나면 프로그래밍 연재나 해볼까나 싶습니다.
프로그래밍때문에 이쪽을 참조하시는 분도 계시니..
저도 간만에 공부좀 해야죠^^? -_-;; 맨날 까묵는데 -_-;;
물론, 안할지도 모릅니다.
엿장수가 가위를 몇번 칠까요? 엿장수 맘대로죠^^?

x일 완성? : 출판사엔 미안한데 갠적으로 별로 비추하는 시리즈이기에..
XXXXXX 프로그래밍 맛배기 (50편) <== 요래요래^^?..

=====================================================================
1. GCC와 gcc의 가장 큰 차이
=====================================================================

GCC와 gcc의 차이는? 눈에 바로 보이시는 분들~~ 손!

Good 입니다. 소문자와 대문자와의 차이죠^^!
피식~하고 웃으신분들 반성하세요. -_-a 저게 뭐가 다르냐고요?

한국속담에 이런 말이 있습니다.
"ㅏ 다르고 ㅓ 다르다"

비단, 속담말고도 대소문자를 완벽히 구분해주셔야하는
인터프리터나 컴파일러도 있지요.
특히 php, 대문자 소문자 섞어쓰다가 소위 엿되는 수가 있습니다.
경험해보신분들은 아시리라 믿습니다.
(가끔씩 믿는 도끼에 발등 많이 찍혀봐서 -_-;; 압니다.)

=====================================================================
2. GCC vs gcc
=====================================================================

자, 그러면 뭐가 다른지 한번 약자를 풀어 볼까요?

원론적으로 따졌을 경우, 정확한 구분을 한다면 다음과 같습니다.
GCC : GNU COMPILER COLLECTION
gcc : gnu c compiler

후자인 gcc는 여러분이 잘 아시는 컴파일러 gcc입니다.
전자인 GCC는 여러분이 쉽게 관과해 버리는 것이죠^^?

=====================================================================
3. GCC에 대하여
=====================================================================

GNU COMPILER COLLECTION...
GNU의 컴파일러 모음집(?!) 이라고하면 딱 맞을듯 싶네요 ^^

---------------------------------------------------------------------
전부 다 설명을 드리지는 못하고,
이번편에서는 개념으로 마무리 짓고자 합니다.
실제로 GCC에 대해서 책을쓴다면, 몇페이지정도 될까요?
작게잡아도 내용만 600 페이지정도? +ㅁ+;;
---------------------------------------------------------------------

GCC가 제공하는 언어는 다음과 같습니다.
1) C
2) C++
3) Objective-C
4) Fortran
5) Java
6) Ada

자, 여러분이 컴파일 해볼 수 있는 언어들이 많아졌습니다.
허나 저같은 경우 실제로는 GCC통합 패키지를 거의 안씁니다.
(java의 경우 jre등, sdk를 셋팅해서 사용했던 것으로 기억납니다.)
하지만, GCC의 막강한 기능을 체험한다면? 말이 좀 달려지죠..

저 위에 나열한 6가지 언어의 장단점에 대해서 아시고 계시는지요?
만약 저 6가지의 장점만 섞어서 프로그램을 작성한다면^^?
그야말로 Very Good이겠지요?
(한번 장단점에 대해서 알아보시기 바랍니다.)

그것이 가능하도록 만든것이 바로 GCC입니다.
닷넷에서도 이런 개념들에대한 이야기가 있지요?
(돈되면 뭐든지 손을 뻗는 MS사는 컨닝을 많이합니다.)
(어쩌면 코어소스를 공개하지 못하는 이유가 이와 비슷할지도?)

=====================================================================
4. 자가 전검 I (preprocessor)
=====================================================================

먼저 내용에 들어가기 앞서서..
다음 사항들을 얼마나 알고 계신지 확인해 봅시다.

01) #
02) #define
03) #elif
04) #else
05) #error
06) #if
07) #ifdef
08) #ifndef
09) #include
10) #include_next
11) #line
12) #pragma
13) #undef
14) #warning
15) ##

자, 대부분은 다 보셨으리라 생각되지만,
10) include_next 만큼은 구경하신분이 드물지 생각됩니다.
next라는 단어가 힌트가 될것 같습니다. ^^

include_next는...
현재까지 탐색한 경로 이후를 탐색해서 include하라는 뜻입니다.

가정 및 동작방식)
1) include_path를 A,B,C,D,E로 잡아 둠
2) #include <aaa.h> 를 했을 때, A~E 순서대로 탐색함
3) aaa.h 파일이 A(없음), B(없음), C(있음), D(없음), E(있음) 일때
4) include_path 탐색규칙에따라 A~E 순서대로 탐색함
5) C에서 필요한 헤더파일을 찾게되어 include 함
6) 만약 그 헤더 파일안에 #include_next <aaa.h> 가 선언되어있다면,
7) 다음경로인 D,E를 재탐색
8) E에있는 내용을 include 함
9) 결론적으로 E의 내용이 include됨

어려우신가요? 그렇다면, 검색해 보시기 바랍니다.
검색어를 입력하시고 Enter 키를 누르시는 순간 검색 첫장에 나올겁니다.
(잡담이기에.. ^^ 그리고 저도 쉽게 써드릴수 있습니다만)
(검색하는 습관도 필요합니다.)

이를 이용해 원본소스의 훼손 및 수정없이
Macro 재정의와 함수 및 변수 재정의등을 할수 있습니다.
간혹 include_next를 나쁘게 보시는 분들도 계신데,
자신의 판단에 맡기겠습니다.

=====================================================================
5. 자가전검 II (Compiling)
=====================================================================

다음 프로그램 언어를 컴파일하는 명령어를 써보시기 바랍니다.
1) C
2) C++
3) Objective-C
4) Fortran
5) Java
6) Ada

쓰신후에 아래를 보시기 바랍니다.

---------------------------------------------------------------------
잠시 잡담..

대학다닐때, 리눅스 설치문제로 가끔씩 학교에서 Call 당했습니다.
가끔 자진해서 친한 대학원생분(남잡니다. 오해마시길..)컴을 손보거나,
셋팅을 해주거나, 변경 및 제어 컨트롤러를 작성하기도 했었지요.

거기까지는 괜찮은데, 가끔씩 교수님들이 Call합니다.
친한 교수님들께 파견을 보내지요. -_-a;; 수고했다. 끝. <== 전부고..

언젠가 클러스터링을 통한 통계치 및 확률분석에 사용할
리눅스를 셋팅하러 갔던것으로 기억납니다.

그때 대뜸 포트란 컴파일러 내놓으라는 교수님 -_-;; 황당했지요.
다행이 포트란 컴파일러가 존재해서, 그걸 알려드렸는데,
그분께서 잘돌아가는지 확인하고 싶다고 코딩까지 하라네요.
그쯤되면 대략 -_-a 미칩니다.

제가 뭔 A/S 기삽니까? 만능입니까? 그리고 언제 배웠습니까? -O-;;
자신의 대학원생들 뒤에 뻔히 있는데도 불구하고, -_-a 왜 절시키는지..

하지만, 이때 느낀바가 있습니다.
세상은 넓고, 할일은 많다. 배워야할 것들이 아직도 수두룩하구나...
그리고 한가지 더 배웠습니다. 약간은 까칠해져야한다라는 것을...
---------------------------------------------------------------------

1) C  : gcc
2) C++  : g++
3) Objective-C : gcc (-Wno-import)
4) Fortran : g77
5) Java  : gcj
6) Ada  : gnat

=====================================================================
6. 마치며
=====================================================================

이번시간은 GCC가 무엇인지 개념을 살짝 잡아보았고,
어떤 프로그래밍 언어를 지원하는지도 확인해보았습니다.
또한, 또 다른 가능성에 대해서도 살며시 스쳐지나가듯 언급했고요.
그 가능성에 대해서는 알아보고 넘어가보고자 합니다.

가능성이 있기에 도전할 가치가 있다.  -낵아늘-

=====================================================================
7. 차회 예고
=====================================================================

[연재잡담-07] NAZU의 GCC (2:컴파일편)
각각의 언어에 대한 컴파일 방법에 대해서 제시해 드립니다.

[연재잡담-08] NAZU의 GCC (3:믹스편)
각각의 언어를 통합하여 사용하는 방법에 대해서 제시해 드립니다.

[연재잡담-09] 쉬어가는 페이지 ^^!
NAZU의 10번째 잡담입니다. 매 10회마다 쉬기로 했습니다.
맨날 잡담만 하면서.. -_-a 또 쉰다니..;;

프로그래머시라면, 7,8화에 관심을 많이 가지시리라 생각됩니다.
(물론, 그렇게 자세히는 설명안드릴 것이지만.. -_-a)
(자세히 설명하다보면 바이블 한권정도 나오는거 아시죠^^?)

그럼 다음 이시간까지 안녕히.. ^^)/

P.S. 오늘도 뒷공원에서 행사가 있나봅니다.
노래자랑 같은데.. 혼자선 별로 가고싶지는 않습니다. -_-a
마리야~ 아베마리야~ <= ㅡ.ㅡ 아중씨 오셨나? 가봐야하나? -_-a


관련자료

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

공지사항


뉴스광장


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