카테고리 : 기타
2007/08/30   [Posix 환경구축]minGW 설치하기
2007/08/30   소프트웨어와 하드웨어의 차이
2007/06/22   며칠동안 짠 프로그램...
[Posix 환경구축]minGW 설치하기
  프로그래밍 방법론이라는 과목을 듣을려고 하는데 교수님이 실습을 위해서 MinGW를 설치하라고 하셨다. 이 번에 컴퓨터를 다시 포멧했기 때문에 다시 MinGW를 설치했는데, 조금 다른 프로그램을 이용해서 예전문서를 그대로 두고(또 누가 필요할지도 모르니..) 새롭게 글을 쓴다.

-------------------------------------------------------
 우선 이 글을 읽기 전 주위 할 점이 있다. 기존의 자신의 컴퓨터에 gcc 가 깔려있는지 확인하는 것이다. Dev-cpp 가 gcc를 내부적으로 이용한다. 예전 버전은 어떤지 모르겠지만 요즘 버전(요즘 버전이라 그랬지만 이 버전도 나온지 몇 년되었다..왜 더 이상 업그래이드를 안하는지 모르겠다.) 깔리면서 환경변수를 손대지 않지만, 예전버전은 그렇지 않을 수도 있다. 이 경우 조금 골치가 아파진다. 

 겉으로는 그냥 컴파일러로 보일지라도 내부적으로 gcc를 가지고 있는 컴파일러 들이 있다. 특히, 임베디드 환경에서 cross 컴파일로 gcc를 많이 사용한다. (크로스 컴파일러는 컴파일하는 환경과 그 프로그램을 이용하는 환경이 다를 경우 그렇게 부른다. 예를 들어 일반 PC에서 컴파일 해서 핸드폰에서 이용하는 프로그램을 만드는 컴파일러를 크로스 컴파일러라고 한다. )  한 번 자신이 사용하는 컴파일러에 gcc.exe 가 있는지 확인해 보아야 한다.
 
 단지 gcc.exe가 있다고 해서 문제 될 것은 없다. 이 부분에 환경변수를 걸드리고 있다면 조금 문제가 될 수 있다. 특히 GCC_EXEC_PREFIX 이 환경변수가 정의되고 있다면 조심해야 한다. 이 환경변수는 gcc의 라이브러리가 있는 곳의 디렉토리를 저장해둔다.  여러개의 gcc 가 사용될 때 이 때문에 다른 gcc가 이 환경변수를 오인하는 경우가 있다. 조금은 조심해야 한다. 

 이를 해결하기 위해서는  batch  파일을 이용해야 한다. 이 GCC_EXEC_PREFIX 이 환경변수를 지워버지고 이 환경변수가 필요한 프로그램에 다음과 같이 batch  파일을 만든다.

set PATH =%PATh%;컴파일러_path
set GCC_EXEC_PREFIX = 정의되어_있었던_라이브러리_디렉토리
start 실행할_컴파일러_이름

 다른 환경변수도 같이 있다면 이 것만으로 해결 안 되는 경우도 있을 수 있다. 나머지 부분은 나도 잘 모르겠다. gcc 문서를 통해 다른 환경변수가 뭐가 있는지 확인하고 자신의 컴퓨터에 설정되어 있는지 확인해야 한다.

-------------------------------------------------------

  http://sourceforge.net/project/showfiles.php?group_id=2435 에 가 보면 Automated MinGW Installer 가 존재한다. 이게 더 설치를 쉽게 도와준다. 

 이 프로그램을 실행한 다음 당연히 Next를 클릭해 준다. 그 다음 다음과 같은 화면이 나온다. 




느낌이 팍 오지 않는가. 첫 번째 Download and install 이다. 그러면 라이센스 표시가 나온다. MinGW가 여러개의 패키지고 그 프로그램마다 GPL 일 수도 있고, 다른 라이센스일 수도 있다는 설명과 몇가지 정보가 더 나온다. (솔직히 더이상 해석하기 싫다. ) 

 당연히 agree 해야 넘어 간다.








 그 다음 어떤 버전을 설치할 것인가 물어본다. 안전하게 current 를 설정했다. (이 정도 영어는 해석할 수 있겠죠..)






 그 다음 설치 패키지를 물어본다. 내 경우, 교수님의 설명서에 FULL 로 되어 있어서 FULL을 설정했다.




 다음은 설치위치를 물어본다. 내 경우는 거의 모든 컴파일러는 C:\tools에 모여있으므로 여기에 MinGW 디렉토리(폴더)를 새로 만들어서 설치했다. 




 설치를 시작하면 인터넷으로 다운받아 자동으로 설치하게 된다.






 이제 설치가 끝났다.

 다행히 이 프로그램의 설치하고 나서 환경 변수를 건드리지 않는 것 같다.  (여러개의 gcc를 사용할 때 이 부분 때문에 각자의 gcc가 엉켜버릴 수 있다. )

 gcc 사용법은 리눅스 사이트에서 찾아보길 바란다. (KLDP 위키를 추천한다. )
by nahanmil | 2007/08/30 23:15 | 기타 | 트랙백
소프트웨어와 하드웨어의 차이
 오늘 수업이 2과목 있었습니다. 그 수업 중 하나는 2학년 과목인데, 이 과목이 작년에 개설된 과목이다 보니 제가 이번 기회를 통해 듣게 되었습니다. 이러다 보니 오늘 같은 교수님을 2번 보는 현상이 나타났습니다.  두 과목이 컴퓨터 관련 과목이다 보니 처음 개론 부분이 너무 유사하여 같은 이야기를 2번 씩 듣는 현상이 나타나서 정말 지루했습니다.

 어째든 그 수업시간 중 한 과목 시간에 아주 좋은 이야기 하나를 듣었습니다.

 "떨어뜨려서 깨지면 그 것은 하드웨어이고 안 깨지면 소프트웨어이다. 그 이외의 차이는 전혀없다. (다시 말해 소프트웨어와 하드웨어의 차이는 없다.)"
  
 소프트웨어 개발자와 하드웨어 개발자 책상에 가보면 똑 같이 책상이 있고 그 위에 컴퓨터가 있다. 그리고 그 컴퓨터 안에 소프트웨어 개발자는 컴파일러가 있고, 하드웨어 개발자는 캐드 툴이 있다. 소프트웨어 개발자는  C, C++, Java 같은 프로그래밍 언어를 사용하고 하드웨어 개발자는 VHDL 이라는 언어를 사용한다. 그 개발원리는 모두 상위 개념에서 하위개념으로 접근하든지 하위 개념에서 상위 개념으로 접근하는 형태를 취한다. 또, 기능을 나누어서 모듈화를 하고 각각의 모듈은 인터페이스를 통해 결합된다. 결과물을 내기전, 똑같이 디벙깅을 하며, 시뮬레이션한다.
 결론적으로 최종 결과물의 형태가 다르다.

 제가 듣었던 내용대로 적을려고 노력했는데, 약간은 제 생각도 포함되어 있는 것 같습니다.

 얼마전 스승의 날에 한 교수님을 찾아간적이 있습니다. 그 교수님도 비슷한 말씀을 했습니다. (이 교수님은 아날로그 쪽에 가깝습니다.) 자신은 하드웨어와 소프트웨어를 왜, 구별하는지 모르겠다. 같이 프로그래밍 해서 칩으로 구으면 하드웨어이고 컴파일 하면 소프트웨어 아니냐고 하셨습니다. 

 저는 그 동안 소프트웨어, 아날로그 하드웨어, 디지털 하드웨어를 철저히 구별해 왔는데 이 경계가 하물어 지고 있는 것 같습니다. System On Chip 으로 이 영역이 합쳐지고, 임베디드 시스템이 많아지면서 동시에 하드웨어와 소프트웨어를 알아야 할 필요성이 많아지고 있습니다. 

 
 마지막에 교수님이 결국, 지식과 지혜를 배운다는 점에서 같다고 했는데, 이 말이 정답인 것 같습니다.
by nahanmil | 2007/08/30 20:54 | 기타 | 트랙백
며칠동안 짠 프로그램...
 시험 대신 텀 프로젝트로 대체한다고 해서 짠 프로그램 입니다. 다른 시험 때문에 3일 만에 완성 했는데, 그래도 밤 새서 했으니 일주일 고생 한 것과 비슷하다고 우기고 싶군요... 

 위와 같은 이미지 파일을 읽어서 이 것의 개수가 몇 개인지 세는 프로그램 입니다.  약간의 필터를 적용하고 Histogram Equalzation을 적용하면 다음과 같이 영상이 변합니다.

 
 이 상태에서 사용자로 부터 어느게 물체이고 배경인지 마우스로 선택받게 됩니다.   
 그 다음 threshold 와 labeling 을 적용하면 물체의 개수를 세게 됩니다.


  



 11개라고 찍힙니다. ...

 
  소스공개는 아쉽게도 안됩니다. 기본 적인 이미지 읽고 쓰는 라이브러리 파일이 교수님 랩실에서 사용하는 라이브러리 이므로 상용으로 이용할 수 없는 라이브러리 파일입니다.   

 제가 MFC 라이브러리를 잘 이용해서 공개할 수 도 있겠지만, 귀찮아서 그런 짓을 안 할 것 같군요... 

 제가 이 프로그램을 만들기 전부터 생각한 것인데... 이 걸로 조리퐁 개수 세기를 할 수 있을 것 같군요....
by 한밀 | 2007/06/22 00:44 | 기타 | 트랙백
<< 이전 다음 >>