[출처:http://kelp.or.kr]


글쓴이 : 유영창 (2004년 09월 03일 오전 05:25) 읽은수: 1,905 [ 임베디드강좌/유영창  ] 
ADK001 Makefile 작성법
===================================

1. 개요

이 문서는 ESP-NS에서 동작하는 응용 프로그램을 작성하기 위해서
Makefile을 만드는 방법을 정리한 문서입니다.

작성자 : 유영창 frog@falinux.com
작성일 : 2004년 9월 3일

관련된 ADK( Application Developer Kit ) 디렉토리

adk/sample/lib_Makefile
adk/sample/app_Makefile

AND

MinGW Developer Studio 2.05는 Freeware 입니다.
아래 링크의 3가지 파일을 한 디렉토리에 저장후 압축을 풉니다.
사용방법은 기존의 Visual Studio와 동일하게,

<1>  Project 경로 설정및 이름을 입력후,

<2> Ctrl+N 하신후, Sorce File을 작성하시면 됩니다. <c,c++>


Compile, Debug, Link도 모두 동일한 모양의 아이콘으로 구성되어 있습니다.








AND

Step 1

  • object 파일을 만든다.

<d:\source>gcc -c test.c


Step 2

  • 일반 Console 프로그램일 경우

<d:\source>gcc -o test.exe test.o


  • 원도우용 프로그램일 경우

<d:\source>gcc -o test.exe test.o -mwindows


Step 3

<d:\source>test


이러한 단계를 거쳐 Windows의 console mode에서 컴파일을 할 수 있다.

AND

자 이제 메인 이벤트 울트라에딧과 mingw의 연결을 할차례다.

 별로 어려울건 없다. 긴장을 푸시고 시작하자


출처 : http://blog.naver.com/ksunghwank/
AND

두번째 포스트 설치하기

윈도우에서 설치한다는것은 버튼누르기이다.

아무렇게나 Next라고 누르면 모두 설치가 되니 너무 쉽고 좋다. 그래서 이번엔

설치하는법은 생략토록 하겠다. ㅎㅎㅎ~ 농담

mingw 는 그냥 next만 누르면 설치가 끝난다. 중간에 디렉터리를 정해주는때가 나올때

설치한 디렉터리만 잘 기억하면 된다.

울트라에딧역시 설치는 간단하다. 그냥 ok랑 next만 적절히 눌러주면 끝이난다.

마지막에 파일연결에대한 질문이 나오는데 all 으로 해주면 편하겠지만 .txt는 메모장으로 열도록 놔두는게 편할듯...

설치편은 싱거우니까 짧게 줄이겠다.


출처 : http://blog.naver.com/ksunghwank/

AND

이전에 쓴것은 Tcc와 UltraEdit32 9.01b 라는 녀석을 짝짓기 시켰다.

그러나 이번에는 mingw라는 놈과 더욱 강화된 UltraEdit32 10.10c 라는 놈과

mingw라는 놈을 짝짓기 시키겠다. ㅇㅎㅎ~

출처 : http://blog.naver.com/ksunghwank/
AND

Debug가 아닌 Release로 컴파일 했을 때의 속도차이를 봤을 때,

의외로 정적 배열에 비해서 STL Vector가 속도가 더 빠른 것을 볼 수 있다.

 

#define VERTEX_SIZE 10000000

 

 int i;

 clock_t time_s = clock();

 vector <CVector3f> v;
 v.reserve(VERTEX_SIZE);
 v.resize(VERTEX_SIZE);
  for(i = 0 ; i < VERTEX_SIZE; i++){
   v[i].set(1.0f, 2.0f, 3.0f);
  }
 clock_t time_e = clock();


 clock_t time_s1 = clock();
 vector <CVector3f> v4(VERTEX_SIZE);
  for(i = 0 ; i < VERTEX_SIZE; i++){
   v4[i].set(1.0f, 2.0f, 3.0f);
  }

 clock_t time_e1 = clock();
 

 vector <CVector3f> v2;
 clock_t time_s2 = clock();

 for( i = 0 ; i < VERTEX_SIZE; i++){
  CVector3f tv;
  v2.push_back(tv);
 }
 clock_t time_e2 = clock();

 

 clock_t time_s3 = clock();
 CVector3f* v3 = new CVector3f[VERTEX_SIZE];
 for(i = 0 ; i < VERTEX_SIZE; i++){
  v3[i].set(1.0f, 2.0f, 3.0f);
 }
 clock_t time_e3 = clock();

 

 clock_t time_s4 = clock();
 CVector3f ttv;
 for(i = 0 ; i < VERTEX_SIZE; i++){
  ttv.set(v4[i]);
 }
 clock_t time_e4 = clock();

 

 clock_t time_s5 = clock();
 for(i = 0 ; i < VERTEX_SIZE; i++){
  ttv.set(v4.at(i));
 }
 clock_t time_e5 = clock();

 

 clock_t time_s6 = clock();
 for(i = 0 ; i < VERTEX_SIZE; i++){
  ttv.set(v3[i]);
 }

 clock_t time_e6 = clock();

 

 FILE *fp = fopen("checktime.txt","w");

 fprintf(fp, "0 = %d, 1 = %d, 2 = %d, 3 = %d, 4 = %d, 5 = %d, 6 = %d\n", time_e-time_s,time_e1-time_s1, time_e2-time_s2, time_e3-time_s3, time_e4-time_s4, time_e5-time_s5, time_e6-time_s6);

 fclose(fp);

 

0 = 407, 1 = 484, 2 = 7156, 3 = 2407, 4 = 0, 5 = 31, 6 = 0

메모리 할당 시 STL 벡터에 비해서 정적 벡터가 6배 정도 느리다.

벡터 내 데이터를 접근할 때, v[i]와 v.at(i)는 같은 결과를 내지만 속도면에서 v[i]이 더욱 더 빠르다.


 

AND

String to character array 
1. cp = s.c_str();  or s.data();
Pointer cp points to a character array with the same characters as s.
주의!! 리턴 타입이 const char*임, const char*는 char*로 변환이 거의 사용 불가능. ㅡ.ㅡ
2. 그래서 원하는 타입이 char*일때의 아래의 방법을 사용함

string q1;
string str; 
 
int len = Edge[i][0].length();
char *term = new char[len+1];
Edge[i][0].copy( term, len, 0 );
term[len] = '\0';//문자 끝을 알려줌(안그럼 이상한 문자로 채워짐)
CStem::stem(term);//char*타입을 파라미터로 사용하는 메소드
str = term;
q1 = str;

또는...
char* tmptoken = (char*)token.c_str();

AND

 C Programming Master (Data Structure & Algorithm 포함)
C언어란 1980년대말부터 널리 보급된 컴퓨터 프로그래밍 언어로 다른 어떠한 컴퓨터 언어보다도 광범위한 분야에 적합하도록 만들어진 언어입니다. 이처럼C언어의 광범위한 효율성때문에 컴퓨터 프로그램은 물론 컴퓨터 그래픽스, 컴퓨터 게임, 웹 마스터, 웹 디자인등 모든 컴퓨터를 이용한 작업의 심도있는 제어를 가능하게 하는 기본이 됩니다.

주차

개 요

세부교육과정

1
01

CLanguage Fundamentals

­ C Language Fundamentals (C언어의 개념)
­ 컴파일, 링크, 실행, 디버깅 방법
02

Data Type

­ Data Type (데이터 형) ? 변수 & 상수
­ Type Casting (데이터 형 변환)
03

Standard Input/Output

­ Standard I/O Function (표준입출력 함수 - printf(),scanf())
­ Input/Output Function (한문자 단위의 입출력 함수)
­ Operator (연산자)
04

Control Structure-Ⅰ

­ Control Structure ?if Statement (제어구조 ? if 문)
­ switch case Statement (switch case 문)
05

Control Structure-Ⅱ

­ for Statement (for 문)
­ while Statement (while 문)
­ break Statement, continue Statement (분기문)
2
06

Array

­ Content-of Operator [] (내용 연산자-배열선언 연산자)
­ 1-Dimensional Array (1차원 배열)
07
­ 1차원 배열의 활용
(최대값, 최소값, 검색(선형검색, 이분검색), 정렬 등)
08

Pointer

­ 포인터의 기본 개념
­ 포인터의 활용, 동적메모리 할당
09

Array-Ⅲ

­ 2-Dimensional Array (2차원 배열)
­ 2차원 배열의 활용(행렬연산, 검색 및 성적관리 프로그램)
10
Function ­ Function (함수)
­ Call By Value/Call By Address(매개변수 호출방법)
­ 함수의 매개변수로 배열을 전달하는 방법
3
11
Preprocessing Command ­ Function Pointer (함수 포인터)
­ Preprocessing Command (전처리기 및 전처리 명령어)
12
structure ­ structure (구조체)­ union / enum (공용체 / 열거형)
13
­ 구조체의 활용(명함관리 프로그램)
14
File Input/Output ­ File Input/Output (파일 입출력)
­ 파일 활용(fprintf(), fscanf(), fputs(), fgets(), fputc(), fgetc())
15
algorithm ­ 알고리즘이란?
­ 알고리즘 분석기법 및 최적화 기법
4
16
Linked List ­ 단일 링크드 리스트(스택, 큐)
­ 더블 링크드 리스트(스택, 큐)
17
Stack ­ 스택의 응용(전위 / 중위 / 후위 표기법)
18
Tree ­ Tree(트리의 순회)
19
Sort algorithm ­ 정렬 알고리즘
20
Search algorithm ­ 검색 알고리즘

Visual C++ Programming Master (Microsoft Foundation Class)
윈도우즈용 응용 프로그램의 통합 개발 환경인 마이크로소프트 비주얼 C++에 부속되는 클래스 라이브러리로서 윈도우즈 응용 프로그램 작성에 유용한 많은 클래스를 제공합니다 (60시간)

 C++ Programming Master

주차

개 요

세부교육과정

1
01
Object Oriented Programming - OOP(Object Oriented Programming)의 개념
- Object Modeling(객체 모델링)-C++ 의 struct(구조체)
02
C++의 Input/Output - printf와 scanf()를 대신하는 입출력 방식- IO Stream(cin , cout , cerr)
03
C++로의 변화된 문법 - Function Overloading(함수 오버로딩)
- Default Argument(기본 매개변수)- Inline Function(인라인 함수)
04
- name space(이름 공간)
- Reference(참조) 와 Alias(별명)
- Call by Reference(참조에 의한 호출)
- new & delete(동적메모리 할당-malloc)
05
class-Ⅰ - struct & class(구조체와 클래스의 비교
- class & instance(객체)
- Access Specifier (public , protected , private)
- Member(Variable / Function)
2
06
class-Ⅱ - constructor(생성자) 와 destructor(소멸자)
- Encapsulation(캡슐화)
- this pointer variable(this포인터 변수)
- class & array(객체의 배열)
07
copy constructor - copy constructor(복사 생성자)
- 복사생성자의 형태
- Deep Copy(깊은 복사)를 하는 복사생성자
- 복사생성자가 호출되는 경우
08

inheritance (상속)

- inheritance(상속)의 개요
- derived class(파생클래스)의 정의
- 상속된 객체와 포인터 그리고 참조의 관계
- Static Binding(정적바인딩) & Dynamic Binding(동적바인딩)
09
virtual - virtual(가상)의 의미
- virtual Function (가상 함수)
- Subtype Principle (Subtype 의 원리)
- Pure virtual Function (순수 가상함수)
- virtual destructor(가상 소멸자)
10
다중상속 - 다중상속에 대한 이해
- 다중상속의 문제(모호성)
- virtual base class(가상베이스클래스)
3
11
Operator Overloading - Operator Overloading(연산자 중복정의)의 의미
- Overloading(중복정의)가 불가능한 연산자
- 단항연산자의 오버로딩
- 교환법칙 문제의 해결
- 참조의 리턴
12
새로운형태의typecasting - typecasting(형변환)이 필요한 이유
- static_cast & dynamic_cast
- downcast
- const_cast & reinterpret_cast
13
RTTI - run time type information(RTTI)가 필요한 이유
- 실행시에 객체의 클래스 이름 얻어오기
- dynamic creation(동적생성)
- typeid
14
Exception Handling - exception(예외)의 의미(fault 와 error)
- 기존의 예외처리 방법과 C++의 예외처리 매커니즘
- 예외의 제한 및 전파(propagation)
- Stack Unwinding(스택풀기)
- exception handling class(표준예외처리 클래스)
15
File I /O Stream - C++ File Input/Output(파일 입출력)
- Binary & ASCII File(바이너리와 아스키파일)
- Buffering(버퍼를 사용하지 않는 입출력)
4
16
template
(템플릿)
- template(템플릿)의 이해
- function template(함수템플릿)
- class template(클래스템플릿)
- STL(Standard Template Library)
17
STL Component - container(컨테이너)와 generic algorithm
- iterator(반복자)
- 어댑터와 할당기
- 확장성
18
Sequence Container - Vector(벡터)
- Deques(덱)
- List(리스트)
19
Sorted associative container - Sorted associative container(정렬연관 컨테이너)
- Set & MultiSet(셋과 멀티셋)
- Map & MultiSet(맵과 멀티맵)
20
Container Adaptor - Stack Container Adaptor(스택 컨테이너 어뎁터)
- Queue Container Adaptor(큐 컨테이너 어뎁터)
- PriorityQueue Container Adaptor(우선순위큐 컨테이너 어뎁터)

 Visual C++ Programming Master

주차

개 요

세부교육과정

1
01
MFC Fundamentals - 윈도우 프로그래밍의 특징 및 원리
­ VC++컴파일러의 사용법
­ Win32 API를 이용한 윈도우 프래그램의 이해
­ 윈도우 만들기
­ 메시지 정의, 배경색, 아이콘, 커서바꾸기
­ 메뉴만들기, 글자출력
02
Application Frame Works - AFX Class의 이해
- AppWizard를 이용한 프로젝트 생성
- Document / View 구조 이해하기
03
Message - EventDriven의 이해
- Message의 상호작용 및Message Handler
- KeyBoard Message
- Timer Message
04
GDI를 이용한 그래픽 - 윈도우 그래픽의 이해
- 하드웨어 독립적인 프로그래밍
- Raster Operation(레스터 오퍼레이션)
- Bitmap
- Mapping Mode ? View Port
05
Dialog Box
- Modal Dialog
- DDX(DoDataExchange) ? DialogBox와의 통신
- Modeless Dialog
- Common Dialog
2
06
표준컨트롤 - List Box Control
- TextBox 와 Button Control
- Value형 변수와 Control형 변수
- Control형 변수를 이용한 SubClassing
07
Resource - Menu
- Short Key
- Icon & Cursor
08
Control Bar
(컨트롤바)
- Tool Bar
- Status Bar
- Dialog Bar
09
Document / View - Document Template
- 메모리상에서의 데이터관리
- Document 와 View의 통신
10
SDI / MDI - Single Document Interface
- Multiple Document Interface
- MDI 프로그램의 구조 분석
- MDI 의 AFX Class 간의 상호참조
3
11
SplitterWnd & Multiple View - Splitter Window의 장점
- Dynamic Splitter Window(동적분할 윈도우)
- Static Splitter Window(정적분할 윈도우)
- Multiple View(다중뷰)
12
File - File 입출력
- CfileDialog Class
- Serialize
- Registry(레지스트리)에 프로그램의 설정 저장
13
Dynamic Linking Library(DLL) - DLL의 장점
- General DLL
- Extension DLL
- DLL을 이용한 혼합 프로그래밍(Visual Basic와의 연결)
14
Print(인쇄) - MFC의 인쇄코드
- MultiPart
- 용지크기에 맞추기
- 문자열크기 맞추기
- 그래픽 인쇄하기
15
Multi Media - Sound Play(사운드 연주 및 비동기 연주)
- MCI(MCI_Open & Play & Close)
- 동영상 재생
4
16
OLE - OLE의 이해
- MFC의 OLE지원
- OLE 서버와 컨테이너의 구현
- ClipBoard를 이용한 데이터 전송
17
ActiveX Control - ActiveX Control의 이해
- ActiveX Control 제작 및 사용
- Subclassing(서브클래싱)을 이용한 ActiveX Control
18
Automation - Automation의 이해
- UserInterface가 없는 Automation Server
- UserInterface를 갖는 Automation Server
- 다중인터페이스 Automation Server
19
Database - ODBC의 이해
- ODBC를 이용한 DataBase Application
- ADO를 이용한 DataBase Record의 조작기법
20
Network - Windows Socket
- IP / Protocol
- MFC Socket Class
- 범용적인 Socket Class 제작


Visual C++ Programming Master(Component Object Model)

COM (Component Object Model)은 Component를 만들고 이 Component에서 Application을 구축하는 방법에 대한 명세서(Specification)입니다. 따라서 COM은 일정한 형식을 가지고 있어야 하며, 그래야만 어떠한 Application(설령 다른 언어로 만들어진 Application이라 하더라도)에서라도 마치 레고 블럭을 맞추듯 사용할 수 있는 것입니다. 즉 다시 말해 COM은 프로그램의 Component 객체들을 개발하고 지원하기 위한 하부 기반구조로서, CORBA(Common Object Request Broker Architecture)에서 정의된 수준의 기능 제공을 목표로 합니다. 마이크로소프트의 OLE가 사용자가 화면에서 볼 수 있는 복합문서를 위한 서비스를 제공하는 반면, COM은 인터페이스 교섭, 생명주기 관리, 라이선스, 이벤트 서비스(다른 객체에서 발생된 이벤트의 결과로서 한 객체를 서비스에 배정) 등 하부 서비스를 제공합니다. COM은COM+, DCOM, ActiveX interfaces, 프로그래밍 도구 등을 포함합니다.
우리는 COM을 공부함으로써 언어에 독립적이고, 이식성이 강하며, 플랫폼에 독립적인 Component를 작성하는 능력을 배양할 수 있습니다.

주차

개 요

세부교육과정

1
01
COM을 위한 기초클래스 - 구조체(struct)와 클래스(class)
- 단일상속
- 다중상속
- 가상함수 와 추상클래스
02
COM의 개요 - Component의 장점
- Component를 만들기 위한 규정
- COM Library
03
Interface - COM Interface
- Vritual Function Table
04
QueryInterface - IUnknown Interface의 포인터 획득
- QueryInterface의 구현 및 사용
- Casting
05
ReferenceCount HRESULT , GUID - AddRef() 와 Release()
- HRESULT
- GUID를 사용하는 이유
- 레퍼런스로 GUID 전달하기
2
06
Dynamic Linking Library(DLL) - DLL의 기초
- DLL Server 만들기
07
클래스 팩토리(Class Factory) - 레지스트리 등록방법
- 클라이언트(Client)에서 DLL로 접속하기
- 클래스 팩토리
- COM Server 만들기
08
MFC COM Programming - 클래스 팩토리 및 DLL등록/해지
- MFC COM 프로그래밍
09
로컬 서버의 구현 - IDL/MIDL(Interface Description Language/Microsoft IDL)
- 인-프로세스 서버(In-Process Server) 구현
- 프로세스(Process) 간의 통신
- 아웃-오브-프로세스(Out of Process) 구현
10
MFC Automation 구현 - 자동화 클라이언트와 자동화 서버
- MFC에서의 자동화 서버의 구현
- 자동화 클라이언트의 구현
3
11
ActiveX Programming - ActiveX의 기초
- ActiveX 컨트롤의 기초
12
ActiveX Control 만들기 - 원형 컨트롤 만들기
- ActiveX 컨트롤의 테스트
- 클라이언트 프로그램 제작
13
ActiveX SubClassing - 서브클래싱
- 트리 컨트롤 서브클래싱
- 마우스 드래그 앤 드롭과 관련 속성 및 이벤트 구현
14
ATL COM 기초 - 템플릿과 스마트 포인터
- Active Template Library
15
ATL 통합과 포함 - ATL을 이용한 내부 COM 객체의 구현
- 포함 COM 객체의 구현
- 클라이언트 프로그램의 제작
4
16
ATL 자동화 구현 - 자동화 객체란
- 디스패치 인터페이스(Dispatch Interface)
- 자동화 서버의 구현
17
복합 컨트롤과 DHTML 컨트롤 - 복합컨트롤(Composite Control)의 구현
- DHTML Control Class
- DHTML 컨트롤 구현
18
OLE-DB - OLE-DB의 기초
- OLE-DB의 개요
19
OLE-DB 프로바이더와 컨슈머 - OLE-DB Provider
- OLE-DB Consummer
20
MFC기반의 OLE-DB - OLE-DB를 이용한 MFC Programming


 Network Programming Master

주차

개 요

세부교육과정

1
01
Network Programming - 네트워크 프로그래밍의 이해
- Socket의 이해
- File의 이해
02
Socket 과 Protocol - Protocol의 정의
- Socket의 생성
- Protocol의 체계
03
Address 와 Network Byte Ordering - Internet Address 와 Port
- Network Byte Ordering
- 주소정보 할당하기
04
Server/Client (TCP) - TCP의 이해
- TCP Server / Client의 함수 호출관계
- Echo Server의 구현
05
- Echo Client의 구현
- Boundary가 없는 TCP 기반의 데이터 전송
- TCP의 내부 구조
2
06
Server/Client (UDP) - UDP의 이해
- UDP Server / Client의 구현
- 데이터의 경계가 존재하는 UDP Socket
- UDP Socket의 성능의 향상
07
Connect / Close - Socket의 연결 및 종료의 문제점
- 제대로 종료하기
08
Domain Name System - DNS(Domain Name System)
- IP주소와 Domain 이름 사이의 변환
09
Socket Option - 소켓의 옵션
- SO_SNDBUF & SO_RCVBUF
- SO_REUSEADDR
- TCP_NODELAY
10
MultiCasting Server - Process의 생성 및 Zombie Process
- Signal Handling
- 다중접속서버의 구현
- 입출력 루틴의 분할
3
11
IPC - 프로세스간의 통신(Inter-Process Communciation)
- IPC를 이용한 응용 Application
12
IO Multiplexing - I/O 멀티플랙싱 기반의 서버
- select 함수의 사용
- 멀티플랙싱 서버의 구현
13
Socket IO - recv & send 입출력합수
- readv & writev 입출력함수
14
Multicast & Broadcast - 멀티캐스트(Multicast)
- 브로드캐스트(Broadcast)
15
IO Stream의 분리 - 스트림의 분리
- File Descripter의 복사와 스트림의 분리
4
16
Multi Thread - 프레세스(Process)와 스레드(Thread)
- Thread의 생성 및 임계영역(문제점)
- 동기화(Synchronization)
- 뮤텍스(Mutex) 와 세마포어(Semaphore)
17
Windows기반의 Thread - 윈도우 기반의 Thread 생성
- Signaled & Non Signaled 오브젝트
- 멀티스레드 프로그그램의 문제점
18
Thread의 동기화 - 스레드 동기화 기법의 종류
- Mutex(Mutual Exclusion) & Semaphore
- Event
19
비동기 입출력 모델 - 비동기 Notification의 의미
- WSAEventSelect 모델 기반의 에코서버 구현
20
Overlapped 입출력모델 - Overlapped 입출력의 의미 및 기본단계
- Event커널 오브젝트 기반의 Overlapped I/O
- Completion Routines 기반의 Overlapped I/O

AND

gcc 초보 강좌

Development/C++ 2007. 5. 11. 17:13

세상에서 제일 뛰어난 C 컴파일러 중 하나인 gcc 는 리눅스나 기타 자유 운영체제 에 있어 커다란 보배가 아닐 수 없습니다. 우리가 알고 있는 유닉스가 C 언어로 거의 다 만들어졌듯이 리눅스의 모국어는 바로 gcc 입니다.

사실 많은 분들이 리눅스 해커(hacker), 구루(guru)의 경지가 되고 싶어합니다. 그렇게 되길 원하신다면 리눅스의 모국어인 gcc 를 익히십시요. gcc 를 알면 리눅스를 아는 것이나 다름 없습니다. 사실 C 와 유닉스가 따로 떨어진 것이 아니라 어떻 게 보면 일심동체라고 할 수도 있듯이 gcc 와 리눅스는 일심동체라고 봐도 무방합니다.


출처 : http://blog.naver.com/geranmari/140005660722


AND