1장 리눅스의 기본 개념과 프로그램 작성 리눅스의 기본 개념 시스템에 접속하기 리눅스의 프로그래밍 환경

Slides:



Advertisements
Similar presentations
프로그램이란 프로그램 생성 과정 프로젝트 생성 프로그램 실행 컴퓨터를 사용하는 이유는 무엇인가 ? – 주어진 문제를 쉽고, 빠르게 해결하기 위해서 사용한다. 컴퓨터를 사용한다는 것은 ? – 컴퓨터에 설치 혹은 저장된 프로그램을 사용하는 것이다. 문제를 해결하기 위한.
Advertisements

Format String Attack! 포맷 스트링 공격 경일대학교 사이버보안학과 학년 남주호.
컴퓨터와 인터넷.
목 차 C# 언어 특징 .NET 프레임워크 C# 콘솔 프로그램 C# 윈도우 프로그램 실습 프로그래밍세미나 2.
정보 보안 개론과 실습 네트워크 해킹과 보안 3부 해킹 전 정보 획득 Chapter 10. 목록화.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발과정 C Express Slide 1 (of 31)
ㅎㅎ C++ 프로그래밍의 첫 걸음 C++로 프로그래밍한다는 것의 의미 세상에서 가장 간단한 C++ 프로그램
2장. 프로그램의 기본 구성. 2장. 프로그램의 기본 구성 2-1"Hello, World!" 들여다 보기 /* Hello.c */ #include int main(void) { printf("Hello, World! \n"); return 0;
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
Database Laboratory, Hong Ik University
Power Java 제3장 이클립스 사용하기.
Power Java 제3장 이클립스 사용하기.
Windows Server 장. Windows Server 2008 개요.
Cross Compiler를이용한 커널 컴파일 및 포팅
Cross Compiler를이용한 커널 컴파일 및 포팅 1
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 프로그래밍 언어 1-1 C 언어의 개론적 이야기 한글, 엑셀, 게임 등의 프로그램을 만들 때 사용하는 언어 ‘컴퓨터 프로그래머’라는 사람들이 제작 C 언어(C++ 포함)를 가장 많이 사용함.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
Power Java 제2장 자바 개발 도구.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
Linux서버를 이용한 채팅프로그램 지도 교수님 : 이형원 교수님 이 름 : 이 은 영 학 번 :
8장. 원격지 시스템 관리하기.
Root Filesystem Porting
C / C++ Programming in multi platform
1. C++ 시작하기.
소리가 작으면 이어폰 사용 권장!.
Root Filesystem Porting
컴퓨터정보공학부 서버 안내 [ IBM x3500 ] it.sangji.ac.kr ict.sangji.ac.kr 혹은
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
Linux Master 김희승 임승한 OneScore 임승한.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
WinCE Device Driver 실습 #3
Cross Compiler 설치.
뇌를 자극하는 Windows Server 장. Windows Server 2008 개요.
AVR – ATmega103(ATMEL) Compilers & ISP
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Homework #6 (1/3) 다음을 수행한 후, 화면(혹은 파일)을 출력하여 제출한다.
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
Linux/UNIX Programming
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
자바 5.0 프로그래밍.
1. 스크립트 작성 마법사 2. NSIS 스크립트 컴파일
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
PMIS 서버 설정 환경설정 작성자 : 배경환.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
Kernel, Ramdisk, JFFS2 Porting
( Windows Service Application Debugging )
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
제 6 강 Getting started.
OpenCV 설정 2.21 만든이 딩딩.
뇌를 자극하는 Solaris bible.
DK-128 개발환경 설정 아이티즌 기술연구소
수동 설치시는 설치 방법 1. 두번에 설치 CD 속에 fscommand 폴더 밑에 Osstem 이라는 폴더를
시스템 인터페이스 Lab#5 쉡 실습.
Homework #12 (1/2) 프로그램을 작성하고, 프로그램과 실행 결과를 프린트하여 제출한다.
Linux 9.X 기초에서 활용까지 Chapter 06 VI 편집기.
 파일 아카이브와 압축 명령 익히기.
01. 분산 파일 시스템의 개요 네트워크에 분산된 파일을 사용자가 쉽게 접근하고 관리할 수 있게 해준다.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
시스템 인터페이스 Lab1 X-window 및 명령어 사용.
공학도를 위한 C언어 프로그래밍실습1 -통합개발환경 사용법-
TrustNet 전자 협조전 사용설명서 목 차 작성,수정,삭제 결재함 처리현황 발송대장,접수대장
Installation Guide.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
숙제 작성 및 제출 과정 김진하 2008/03/14.
 6장. SQL 쿼리.
Homework #7 (1/3) 1. 다음 순서에 따라 수행하고, 그 과정의 화면을 캡쳐한다.
Presentation transcript:

1장 리눅스의 기본 개념과 프로그램 작성 리눅스의 기본 개념 시스템에 접속하기 리눅스의 프로그래밍 환경 - vi : 텍스트 에디터 - gcc : C Compiler - make, Makefile - gdb : 디버거

리눅스의 기본 개념 다중 작업 (multi process) 다중 사용자 (multi user) 선점 가능한(preemptive) 실제 다중 작업을 지원 작업은 실행 중인 상태의 프로그램을 의미 (프로세스) 다중 사용자 (multi user) 동시에 여러 명의 사용자가 시스템에서 작업하는 것을 허용 터미널이나 네트워크 연결을 통해서 동일한 하나의 리눅스 시스템을 사용 다중 프로세서 (multi processor) 다중 프로세서 구조에서도 실행될 수 있음 (두 개 이상의 CPU를 가진 시스템을 리눅스가 지원) 이식성과 확장성 이식성이 높음 다양한 언어로 작성된 프로그램을 어렵지 않게 사용할 수 있음

리눅스의 기본 개념 파일 시스템 권한 셸 개발 환경 리눅스의 파일 시스템은 유닉스의 것과 같이 트리 구조를 이루고 있음 별도로 추가된 물리적인 보조 기억 장치들이나 하드웨어 디바이스들도 파일 형태로 파일 시스템에 연결 권한 사용자별로 별도의 권한을 부여 하나의 시스템을 여러 명의 사용자가 동시에 사용할 수 있기 때문에 발생할 수 있는 여러 가지 문제를 사전에 방지 시스템을 관리하기 위한 관리자와 시스템을 사용하기만 하는 사용자 셸 사용자가 시스템을 쉽게 사용할 수 있도록 중간자 역할의 프로그램 사용자가 명령어 라인을 입력해서 원하는 작업을 수행할 수 있음 개발 환경 리눅스는 새로운 프로그램을 개발하기 위한 환경을 제공 프로그래밍 언어용 컴파일러, 프로그램 개발에 필요한 보조적인 유틸리티

시스템에 접속하기 리눅스 시스템의 콘솔이나 터미널과 같은 원격 장치를 사용 telnet 실행 후 open 명령어 사용 시스템의 콘솔은 시스템 관리자만 선택할 수 있는 방법 일반 사용자는 터미널을 사용하거나 텔넷(Telnet)과 같은 응용 프로그램을 사용 telnet 실행 후 open 명령어 사용

시스템에 접속하기 계정 정보 입력 왼쪽의 그림은 유닉스 시스템에 접속한 예다. 로그인에 성공하면 셸 프롬프트가 나타난다. 유닉스나 리눅스와 같이 다중 사용자를 지원하는 시스템을 사용하기 위해서는 해당 시스템 사용자로 등록되어 있어야 함 계정은 ID와 암호를 의미 왼쪽의 그림은 유닉스 시스템에 접속한 예다. 로그인에 성공하면 셸 프롬프트가 나타난다.

PuTTY를 사용하여 리눅스 시스템에 접속하는 예 시스템에 접속하기 리눅스 시스템에 접속 리눅스 시스템은 보안 기능이 지원되는 터미널 프로그램으로 접속하는 것이 일반적임 PuTTY를 사용하여 리눅스 시스템에 접속하는 예 로그인 후 ls 명령을 사용한 예 ※MS Windows의 텔넷(telnet)과 PuTTY는 유닉스나 리눅스에 접속할 수 있는 터미널이다. 접속하려는 시스템의 보안 정책에 따라 적절한 것을 선택한다.

사용자의 ID와 그룹을 확인하는 “id” 명령어의 사용 예 “man id”를 실행하여 id 명령의 사용법을 확인하는 예 시스템에 접속하기 리눅스의 명령어 사용하기 리눅스 시스템의 명령을 사용하려면 해당 명령의 이름을 셸 프롬프트 상에서 입력한다. 사용자의 ID와 그룹을 확인하는 “id” 명령어의 사용 예 “man id”를 실행하여 id 명령의 사용법을 확인하는 예

시스템에 접속하기 man 명령어의 사용 예 man 명령어는 리눅스 시스템의 명령어 뿐만 아니라 프로그래밍 언어의 함수나 셸 스크립트의 사용법도 확인할 수 있다. “man printf”를 실행하여 printf의 사용법을 확인하기 man 명령은 시스템의 명령이나 프로그래밍 언어의 함수 사용법을 익히기 위한 핵심이다.

리눅스의 프로그래밍 환경 프로그래밍 관련 툴 에디터 (editor) 소스 코드를 편집하는 용도로 사용된다. 일반적으로 vi 에디터를 사용한다. 컴파일러 (compiler) 소스 코드를 바이너리 코드로 변경한다. 리눅스 시스템에서는 gcc를 사용한다. 링커/로더 (linker/loader) 목적(object) 파일들을 연결해서 실행 파일을 만든다. 리눅스 시스템에서는 ld를 사용한다. 대부분 컴파일러가 알아서 실행해준다.

리눅스의 프로그래밍 환경 소스 코드 편집하기 소스 코드를 편집하기 위한 두 가지 방법 PC에서 편집하여 FTP 서비스로 리눅스 시스템에 업로드 리눅스 시스템에서 직접 편집 간단한 소스 코드 $ cat > hello.c 복잡한 소스 코드 $ vi hello.c ※vi 편집기를 사용하여 소스 코드를 편집하는 것이 일반적이다.

리눅스의 프로그래밍 환경 소스 코드 편집하기 vi를 사용한 소스 코드 편집 ← vi 에디터를 실행한다. ← 소스 코드를 편집한다. ← 소스 코드를 저장한다. ← 저장된 소스 코드를 확인한다.

리눅스의 프로그래밍 환경 컴파일하기 gcc (GNU C Compiler) 리눅스를 설치할 때 같이 설치할 수 있다. 설치 확인 셸 프롬프트 상태에서 gcc를 실행해본다. gcc: no input files 라는 메시지가 출력되면 설치되어 있다.

리눅스의 프로그래밍 환경 gcc 사용하기 $ man gcc 를 실행하여 gcc의 자세한 사용법을 확인할 수 있다. $ gcc [options] source_files options -o output_filename : 실행파일을 만들 경우 실행 파일의 이름을 지정한다. -c : 지정한 소스코드의 목적(object) 파일을 만든다. source_files .c 를 확장자로 가지는 소스 코드(들) 사용 예 $ gcc hello.c $ gcc –o hello hello.c $ man gcc 를 실행하여 gcc의 자세한 사용법을 확인할 수 있다.

리눅스의 프로그래밍 환경 gcc 사용 예 $ gcc hello.c $ ls -l -rwxr-xr-x    1 kimyh    graduate    13508 Nov 18 15:05 a.out -rw-r--r--    1 kimyh    graduate       58 Nov 18 15:04 hello.c $ ./a.out hello world! $ gcc를 실행할 때 출력 파일의 이름을 지정하지 않았기 때문에 실행 파일의 이름이 a.out이다. a.out을 실행하고 결과를 확인한다.

리눅스의 프로그래밍 환경 컴파일 시 오류 발생 및 해결 $ cat hello.c #include <stdio.h> 소스 코드를 컴파일할 때 오류가 있을 경우 gcc는 오류 메시지를 출력한다. 오류가 발생하면 소스 코드를 수정하고 다시 컴파일한다. $ cat hello.c #include <stdio.h> main() {         printf("hello world!\n") } $ gcc -o hello hello.c hello.c: In function `main': hello.c:6: parse error before `}' $ 문장이 ‘;’으로 종결되지 않았다. 컴파일을 한 결과 소스 코드의 6번 라인에서 오류가 생겼다.

리눅스의 프로그래밍 환경 두 개 이상의 소스 코드로 하나의 실행 파일 만들기 $ gcc –o three one.c two.c 큰 규모의 프로그램은 여러 개의 소스 코드로 나누어서 작성하는 것이 일반적이다. one.c two.c #include <stdio.h> void printmsg(void); main() { printmsg(); } void printmsg(void) printf("hello world!\n"); $ gcc –o three one.c two.c 출력 파일의 이름은 three이다. 소스 코드 파일은 2개로 각각 one.c와 two.c다.

리눅스의 프로그래밍 환경 make와 Makefile target_list: dependency_list command_list Makefile에서 정한 파일 연관성과 생성 순서에 따라 컴파일(compile)과 링킹(linking) 작업을 수행하여 실행 파일을 작성한다. Makefile 하나의 실행 파일을 작성하기 위해서 관련된 소스 코드 파일들을 컴파일하고 링크하는 순서를 정의하고 있는 텍스트 형식의 파일이다. 형식 예제 target_list: dependency_list         command_list three: one.c two.c gcc –o three one.c two.c

리눅스의 프로그래밍 환경 Makefile의 예 three: one.c two.c gcc –o three one.c two.c 생성할 파일의 이름 three를 생성하기 위해 필요한 소스 코드 파일들 three: one.c two.c gcc –o three one.c two.c 명령어 라인은 반드시 Tab으로 들여쓰기 한다. one.c와 two.c를 사용하여 three를 생성하기 위해 실행해야 하는 명령어 라인 Makefile의 이름 기본적으로 Makefile이란 이름을 사용하나 다른 이름을 사용할 수 있다. $ make –f makefile_hello -n 옵션으로 지정할 수 있다.

리눅스의 프로그래밍 환경 디버그하기 (1) GNU gdb 소스 코드의 명령어들을 하나씩 처리하면서 프로그램이 실행되는 과정을 확인할 수 있는 도구이다. gdb를 사용하기 위해서는 gcc를 반드시 –g 옵션을 사용하여 실행파일을 만들어야 한다. $ gcc –g –o test test.c gdb 실행 예

리눅스의 프로그래밍 환경 디버그하기 (2) gdb의 명령어 확인 gdb를 실행 중인 상태에서 help를 입력한다.