제3장 C 프로그래밍 환경.

Slides:



Advertisements
Similar presentations
제 2 장 프로그램 개발과정. 통합 개발 환경  통합 개발 환경 (IDE: integrated development environment)  에디터 + 컴파일러 + 디버거.
Advertisements

C 언어 Sun Moon University 1 of 25 C 언어 : 강의소개 강의실 : 산 211 담당교수 : 고경철 ( 정보통신공학과 ) 사무실 : 산학협력관 105B 면담시간 : 수업후 1 시간
YES C 제 1 장 C 언어의 개요 1/34 제 1 장 C 언어의 개요 문봉근. YES C 제 1 장 C 언어의 개요 2/34 제 1 장 C 언어의 개요 1.1 프로그램과 C 언어의 특징 1.2 C 언어의 프로그램 구성 1.3 비주얼 C++ 통합 환경 들어가기.
1.
프로그래밍1 및 실습 (C언어) - 3장 기본자료형 (3.6부터 끝까지) -
2007 1학기 12 배열.
C 언어 기초 2 위덕대학교 에너지전기공학부 이 수 형 2009년 2학기.
고급 시스템 프로그래밍 제1장 소개 창병모 숙명여대 컴퓨터과학과.
05. gcc, make, gdb.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
Chapter 02 JAVA 프로그래밍 시작하기 01 실무에서 사용하는 JAVA 개발 환경 02 JAVA 프로그램 작성
리눅스 실습 정성훈.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
제 8 장  파서 생성기 YACC 사용하기.
Makefile의 이해 ㈜FALinux 박진호.
Kasimov C언어 세미나 1st.
제9장 C 프로그래밍 환경 창병모
쉽게 풀어쓴 C언어 Express 제4장 변수와 자료형 C Express.
C언어: 배열 (Arrays).
처음으로 배우는 C 프로그래밍 제2부 기초 제5장 반복문.
버퍼 오버플로우에 대한 대책과 발전된 공격 안전한 함수 사용 버퍼 오버플로우에 취약한 함수 사용하지 않기
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
AVR - Chapter 15 황 지 연.
14장. 함수 1 01_ 함수의 기본 02_ 인자의 전달.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
Internet Protocol and Programming
DataScience Lab. 박사과정 김희찬 (월)
Beginning Linux Programming
1장. 프로그래밍 언어, C 프로그래밍.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
제 3 장 상수와 변수
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
Linux/UNIX Programming
제 11 장 전처리기.
adopted from KNK C Programming : A Modern Approach
DataScience Lab. 박사과정 김희찬 (월)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
C언어 응용 제6주 실습 해보기 제5장.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
Kernel Programming Environment
Internet Protocol and Programming
쉽게 풀어쓴 C언어 Express 제2장 프로그램 작성 과정 C Express.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
컴퓨터 프로그램 제2,3장 간단한 C 프로그램 김 문 기.
게임프로그래밍 I - 1차원 배열 - 공주대학교 게임디자인학과 박 찬 교수 2011년 4월 25일.
작은 분야의 일을 훌륭하게 해내는 자그마한 도구들을 개발자들에게 제공하고 개발자들은 이 도구들을 창의적으로 결합하여 사용하자.
조 병 규 Software Quality Lab. 한국교통대학교
자바 5.0 프로그래밍.
제9장 C 프로그래밍 환경 TOPCIT (Test of Practical Competency in IT)
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
JESS Eclipse 박영택 숭실대학교.
C언어 개론.
03. 메모리 관리 C++ 프로그램에서 다룰 수 있는 메모리의 종류
Lab 1. 시스템 호출을 이용하는 mycp.c mycphint1.c & mycphint2.c coding & compile & run 제출 방법 (집에서도 접속 가능합니다) 2 Electronic versions: multi.incheon.ac.kr ( )의.
GDB - GNU Debugger 김진용.
Internet Protocol and Programming
제5장 디버깅과 추적 문봉근.
실습과제 1번 생성된 파일 basic.txt를 프로젝트 폴더에서 메모장으로 열고 내용을 확인
어서와 C언어는 처음이지 제16장.
개정판 누구나 즐기는 C언어 콘서트 제10장 문자열 출처: pixabay.
C 13장. 입출력 라이브러리 #include <stdio.h> int main(void) { int num;
Makefile
C.
C 프로그래밍은 매우 도전적인 작업이다. 도전의 이면에 철저한 준비와 체계적인 노력
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Choi Younghwan CSE HUFS
배열.
C프로그래밍 도구 컴퓨터공학과 강성인.
Presentation transcript:

제3장 C 프로그래밍 환경

3.1 컴파일러

gcc 컴파일러 gcc(GNU cc) 컴파일러 상업용 C 컴파일러(cc) 컴파일 -c 옵션 -o 옵션 $ gcc [-옵션] 파일 $ cc [-옵션] 파일 컴파일 $ gcc long.c $ a.out // 실행 파일 -c 옵션 $ gcc -c long.c -o 옵션 $ gcc -o long long.o 혹은 $ gcc -o long long.c $ long // 실행 파일

단일 모듈 프로그램:long.c #include <stdio.h> #define MAXLINE 100 void copy(char from[], char to[]); char line[MAXLINE]; // 입력 줄 char longest[MAXLINE]; // 가장 긴 줄 /*입력 줄 가운데 가장 긴 줄 프린트 */ main() { int len; int max; max = 0; while (gets(line) != NULL) { len = strlen(line); if (len > max) { max = len; copy(line, longest); } if (max > 0) // 입력 줄이 있었다면 printf("%s", longest); return 0; } /* copy: from을 to에 복사; to가 충분히 크 다고 가정*/ void copy(char from[], char to[]) { int i; i = 0; while ((to[i] = from[i]) != '\0') ++i;

다중 모듈 프로그램 단일 모듈 프로그램 다중 모듈 프로그램 코드의 재사용(reuse)이 어렵고, 여러 사람이 참여하는 프로그래밍이 어렵다 예를 들어 다른 프로그램에서 copy 함수를 재사용하기 힘들다 다중 모듈 프로그램 여러 개의 .c 파일들로 이루어진 프로그램 일반적으로 복잡하며 대단위 프로그램인 경우에 적합

다중 모듈 프로그램: 예 main 프로그램과 copy 함수를 분리하여 별도 파일로 작성 컴파일 main.c copy.c copy.h // 함수의 프로토타입을 포함하는 헤더 파일 컴파일 $ gcc -c main.c $ gcc -c copy.c $ gcc -o main main.o copy.o 혹은 $ gcc -o main main.c copy.c

main.c #include <stdio.h> #include "copy.h" char line[MAXLINE]; // 입력 줄 char longest[MAXLINE]; // 가장 긴 줄 /*입력 줄 가운데 가장 긴 줄 프린트 */ main() { int len; int max; max = 0; while (gets(line) != NULL) { len = strlen(line); if (len > max) { max = len; copy(line, longest); } if (max > 0) // 입력 줄이 있었다면 printf("%s", longest); return 0; }

copy.c copy.h #include <stdio.h> #include "copy.h" /* copy: from을 to에 복사; to가 충분 히 크다고 가정*/ void copy(char from[], char to[]) { int i; i = 0; while ((to[i] = from[i]) != '\0') ++i; } #define MAXLINE 100 void copy(char from[], char to[]);

3.2 make 시스템

make 시스템 make 시스템 Makefile $ make [-f 메이크파일] 대규모 프로그램의 경우에는 헤더, 소스 파일, 목적 파일, 실행 파 일의 모든 관계를 기억하고 체계적으로 관리하는 것이 필요 make 시스템을 이용하여 효과적으로 작업 Makefile 실행 파일을 만들기 위해 필요한 파일들과 만드는 방법을 기술 make 시스템은 파일의 상호 의존 관계를 파악하여 실행 파일을 쉽게 다시 만듬. $ make [-f 메이크파일] 옵션이 없으면 Makefile 혹은 makefile을 사용

메이크파일의 구성 Makefile의 구성 형식 예: Makefile 대상리스트: 의존리스트 명령리스트 main:main.o copy.o gcc -o main main.o copy.o main.o: main.c copy.h gcc -c main.c copy.o: copy.c copy.h gcc -c copy.c

메이크파일의 구성 make 실행 copy.c 파일이 변경된 후 $ make 혹은 $ make main gcc -c main.c gcc -c copy.c gcc -o main main.o copy.o copy.c 파일이 변경된 후 $ make

3.3 디버거

gdb 가장 대표적인 디버거 gdb 사용을 위한 컴파일 gdb 주요 기능 gdb 실행 GNU debugger(gdb) 정지점(breakpoint) 설정 한 줄씩 실행 변수 접근 및 수정 함수 탐색 추적(tracing) gdb 사용을 위한 컴파일 -g 옵션을 이용하여 컴파일 $ gcc -g -o longest longest.c 다중 모듈 프로그램 $ gcc -g -o main main.c copy.c gdb 실행 $ gdb [실행파일]

gdb 기능 소스보기 : l(ist) l [줄번호] 지정된 줄을 프린트 l [파일명]:[함수명] 지정된 함수를 프린트 set listsize n 출력되는 줄의 수를 n으로 변경 (gdb) l copy 1 #include <stdio.h> 2 #include "copy.h" 3 4 /* copy: copy 'from' into 'to'; assume to is big enough */ 5 void copy(char from[], char to[]) 6 { 7 int i; 8 9 i = 0; 10 while ((to[i] = from[i]) != '\0')

gdb 기능 정지점 : b(reak), clear, d(elete) b [파일:]함수 파일의 함수 시작부분에 정지점 설정 b n n번 줄에 정지점을 설정 b +n 현재 줄에서 n개 줄 이후에 정지점 설정 b -n 현재 줄에서 n개 줄 이전에 정지점 설정 info b 현재 설정된 정지점을 출력 clear 줄번호 해당 정지점을 삭제 d 모든 정지점을 삭제 (gdb) b copy Breakpoint 1 at 0x804842a: file copy.c, line 9. (gdb) info b Num Type Disp Enb Address What 1 breakpoint keep y 0x0804842a in copy at copy.c:9

gdb 기능 프로그램 수행 r(un) 인수 명령줄 인수를 받아 프로그램 수행 k(ill) 프로그램 수행 강제 종료 n(ext) 멈춘 지점에서 다음 줄을 수행하고 멈춤 s(tep) n과 같은 기능 함수호출 시 함수내부로 진입 c(ontinue) 정지점을 만날 때 까지 계속 수행 u 반복문에서 빠져나옴 finish 현재 수행하는 함수의 끝으로 이동 return 현재 수행중인 함수를 빠져나옴 quit 종료 (gdb) r Starting program: /home/chang/바탕화면/src/long Merry X-mas ! Breakpoint 1, copy (from=0x8049b60 "Merry X-mas !", to=0x8049760 "") at copy.c:9 9 i = 0;

gdb 기능 변수 값 프린트: p(rint) p [변수명] 해당 변수 값 프린트 info locals 현재 상태의 지역변수 리스트 (gdb) p from $1 = 0x8049b60 "Merry X-mas !" (gdb) n 10 while ((to[i] = from[i]) != '\0') 11 ++i; (gdb) p to $2 = 0x8049760 "M"

gdb 기능 (gdb) c Continuing. Happy New Year ! Breakpoint 1, copy (from=0x8049b60 "Happy New Year !", to=0x8049760 "Merry X-mas !") at copy.c:9 9 i = 0; (gdb) p from $3 = 0x8049b60 "Happy New Year !" (gdb) n 10 while ((to[i] = from[i])!='\0') 11 ++i; (gdb) p to $4 = 0x8049760 "Herry X-mas !" (gdb) c Continuing. Happy New Year ! Program exited normally.

DDD(Data Display Debugger) gdb를 위한 그래픽 사용자 인터페이스 http://www.gnu.org/software/ ddd 정지점을 설정 소스코드의 원하는 위치에 커 서를 이동하고 상 Break 버튼 Next나 Step 같은 명령어 버튼 을 이용하여 한 줄씩 실행 하단에는 gdb 명령어 입력 창

Next: 한 줄 진행

Cont: 계속 진행

Up: 함수 호출자 보기

3.4 이클립스 통합개발환경

이클립스(Eclipse) 통합 개발 환경 이클립스 설치 윈도우, 리눅스, 맥 등의 다양한 플랫폼에서 사용 가능 다양한 언어(C/C++, Java 등)를 지원 막강한 기능을 자랑하는 자유 소프트웨어 이클립스 설치 CentOS 6 설치: [S/W Development Workstation] 선택하면 자동 으로 설치됨 메인메뉴: [시스템]->[관리]->[소프트웨어 추가/제거] 이용하여 이 클립스를 선택하여 설치할 수 있음. https://www.eclipse.org: 리눅스용 이클립스를 다운받아 설치가능

이클립스 시작화면

새로운 C 프로젝트를 생성하기 ‘File →New → C/C++ Projects’ 프로젝트 선택 화면 프로젝트 이름 지정 프로젝트 타입: ‘Hello World ANSI C Project’ 선택 ‘Finish’ 버튼 클릭

이클립스 메인화면 좌측 탐색 창: 중앙 화면의 우측 새로 생성된 프로젝트 확인 및 프로젝트, 파일 탐색 소스 파일은 src 폴더에 헤더 파일은 include 폴더에 저장됨 중앙 상단은 소스 및 각종 파일 등을 편집 수정할 수 있는 창 하단은 C 파일을 컴파일 혹은 실행한 결과를 보여주는 창 화면의 우측 이클립스 사용법을 보여준다.

이클립스 메인화면