티스토리 뷰

Application/C/C++

[강좌] 블럭쌓기 만들기 11일차

알 수 없는 사용자 2012. 3. 26. 00:33

강좌에 들어가기 전에..

억지로 억지로 반은 넘겼군요..

앞으로 고비입니다 흐..

사실, 취직을 하기도 했고요..

그래도 시작한김에 끝내버리려고 합니다 히히..

전 강좌까지는 다른 책에도 많이 있는 강좌이기도 하고..

자세한건 레퍼런스북이나 매뉴얼을 보면 다 나오니까요..

이제부터 다른 책에서는 잘 다루지 않는 내용이 조금 나옵니다..

그래봤자 내용이 길거나 하진 않고요..

제가 컴퓨터 언어 관련해서는 주입식 교육을 받지 않았고, 그렇게 교육할 생각도 없습니다..

이해하지 못하고 어떻게 써먹을수가 있나요?

무책임한 강의라고 생각하셔도 상관은 없지만 그렇게 느낀다는건 참으로 생각이 없다는 뜻도 되니까요.

이제 시작하겠습니다.

 

c랑 cc는 뭔 차이여? / makefile.. 응? 이건 뭐임?

자, c / cc는 c / c++입니다.

윈도우에서는 c / cpp지요?

유닉스 계열에서는 보통 gcc를 많이들 쓰실테고..

cc는 g++로 컴파일하는 경우가 보통입니다..

리눅스에서는 확장자는 따로 구분을 하지는 않지만, 그렇다고 여러분도 구분을 안 하면 나중에 본인이 뭔짓을 했는지 엄청나게 후회할겁니다..

그리고.. 확장자는 구분 안하면서 대소문자 구별은 철저합니다..

에또, 그러니까 신경쓸게 두가지겠죠? ㅋㅋ

뭐 사실, 윈도우에 익숙해져 있다는건 gui지 ntfs가 아닐테니..  그냥 버릇을 들여버리세요 ㅋㅋ

암튼!

c랑 cc는 사람이 붙이는거고 리눅스는 조또 모른다고 쌩깐다고 방금 이야기했지요?

그 의미는, c++인데 걍 .c 붙여도 되고, c파일인데 cc나 cpp 붙여도 된다는 이야기것죠?

아 시발 존나 헷갈리네? 아 존나 불편하죠? 리눅스..

근데 이거.. 제게는 애매하지 않아서 좋아요..

헐? 이게 왜 애매하지 않냐고요?

어차피 사람이 다 정해주는건데 뭐가 애매해요? 당신 애매한 사람이었나요?

뭐 어쨌거나 저쨌거나 확장자는 알아서 정하시고요..

gcc로 c와 c++의 컴파일 방법을 알아보겠습니다..

gcc -o exec source.c [-std=c99]            // C
g++ -o exec source.c [-std=c++98]          // C++
gcc -o exec source.c -lstdc++ [-std=c++98] // gcc에서 c++ 컴파일 하실때

3번째것은 가능하면 안 쓰시는게 좋겠죠? 히히

 

자, 이제 Makefile에 대해서 알아볼까요?

다들 존나 어렵대.

근데 사실 어려워요.

(사실 리눅스 쓰는 새끼들중에 변태들이 존나 많아서..)

이건 그냥 기본소스에서 뜯어고쳐서 쓰다보면 어느새 작성할 수 있게 됨미다.

makefile을 보통 프로그래밍 언어에서 많이들 쓰는데, 이녀석은 원래 다른 용도로도 많이들 쓰여요..

그러니까, 컴파일러든 뭐든, 원본이 달라지면 어떤 작업을 해주어야 하는것들 있잖아요?

뭐, 각각의 원본 벡터파일에서 래스터파일로 렌더링해서 UI 파일을 만들어주어야 한다던가 할때도 쓰이고..

Latex로 문서파일같은거 만들때도 쓰이고 해요..

거기다 자동화가 알아서 되다보니 쓰다보면 편한데 처음 보면 ‘시발 이게 뭐야’라는 소리가 나오죠..

그니까 첨엔 그냥 있는거 수정해서 쓰시다가.. 천천히 이해하시는게 좋아요..

#주석은 이렇게 ㅋ
#objects는 변수처럼 쓰인다는거 알겠죠?
 
objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o
 
edit : $(objects)
        cc -o edit $(objects)
 
$(objects) : defs.h
kbd.o command.o files.o : command.h
display.o insert.o search.o files.o : buffer.h

사실 이것 역시 책으로 낼 정도의 분량이 나오는데..

http://www.gnu.org/software/make/manual/make.html 요기가 매뉴얼 페이지에요..

기본적인 의존성도 만들수 있고.. 뭐..

리눅스에서 쉘이 거의 그렇듯이, 존나 강력해서..

예제 정도만 해도 make 쓸만하고..

까놓고 블럭쌓기 하나 정도 만드는데 코드가 몇메가 되는것도 아니고.. ㅋㅋ

시간이 있다면 좀더 알아두면 나중에 엄청나게 편할겁니다..

오늘 강의는 여기까지..

금방 또 돌아오도록 하겠습니다!!