Beginning Linux Programming

Slides:



Advertisements
Similar presentations
Linux1 Linux 개요 Linux 방문하여 홈페이지 등록하기 Vi 편집해 보기. Linux2 개요  Linux 란 ? 1991 Linus Benedict Torvalds 가 만든 Unix 의 한 버전 GNU(GNU is Not Unix) » 프로그램이나 정보의.
Advertisements

1 장 Unix/Linux 소개 1 Helpers. 1 장 내용 1. 왜 유닉스인가 ? 2. 유닉스 시스템 구조 3. 유닉스 역사 및 버전 4. 리눅스 설치 ( 별도 2 시간 실습 ) 5. 사용 환경 6. 사용자 계정 관리 Unix/Linux 2.
운 영 체 제 실 습 ( 리눅스 서버관리입문 ) 개 요. 2/31 운영체제 (Operating System) 개요 시스템 소프트웨어 !!!  응용 프로그램과 하드웨어 사이의 인터페이스 역할  응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를.
제 2 장 프로그램 개발과정. 통합 개발 환경  통합 개발 환경 (IDE: integrated development environment)  에디터 + 컴파일러 + 디버거.
C 언어 Sun Moon University 1 of 25 C 언어 : 강의소개 강의실 : 산 211 담당교수 : 고경철 ( 정보통신공학과 ) 사무실 : 산학협력관 105B 면담시간 : 수업후 1 시간
KAIST 09 SPARCS 10 안재만 (Kuss).  OS  Kernel & Shell  OS Layer  Linux  Linux / GNU  Linux 역사  Linux 배포판  Linux Directories.
Linux Seminar #1 리눅스 이해하기.
* 07/16/96 처음으로 배우는 C 프로그래밍 제1부 기초 제1장 시작하기 *.
시작부터 끝까지 진지한 궁서체로 진행하는 완벽한 주입식의 하드코어한 리눅스/장난감 세미나
제3장 C 프로그래밍 환경.
1장 유닉스 소개.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
리눅스 실습 정성훈.
컴퓨터 네트워크 실습.
C 프로그래밍 소개 숙명여대 창병모 2011 가을.
Unix(Linux) shell programming
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
2006년 3월 20일 황의권, 지용인, 최종윤 서울대학교 컴퓨터공학부
Kernel Porting Lecture #7.
제4장 Cross Compiler 설치.
공학기초설계 Youn-Hee Han 강의 소개 & MinGW & gcc 공학기초설계 Youn-Hee Han
Kasimov C언어 세미나 1st.
소개: Unix란 무엇인가? 숙명여대 창병모 2009/09.
임베디드 운영체제 (리눅스 중심) Lecture #2.
제9장 C 프로그래밍 환경 창병모
[beginning] Linux & vi editor
임베디드 리눅스 시스템의 기본 개념 강의 목표 내용 임베디드 리눅스 시스템의 기본 개념과 주제 제시 1. 임베디드 시스템
1 C 언어의 이해와 컴파일러 설치 프로그래밍 환경을 구축하자!.
UNIX Unbounded A Beginning Approach
컴퓨터 네트워크 실습.
제 1 장 C 언어의 개요 Google 공동 창업자, 래리 페이지와 세르게이 브린.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Linux Compile.
C++ 프로그래밍 년 2학기 전자정보공학대학 컴퓨터공학부.
누구나 즐기는 C언어 콘서트 제2장 기초 사항.
Internet Protocol and Programming
1장. 프로그래밍 언어, C 프로그래밍.
Geek-OS Project 정영진
제 4 강 운영체제 개요 및 리눅스 실습.
Cross Compiler 설치.
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
Linux/UNIX Programming
상지대학교 컴퓨터공학과 고광만 Lecture 01: 유닉스/리눅스 소개 상지대학교 컴퓨터공학과 고광만
UNIX Internet Server의 대부분을 차지 대표적인 공급업체
Linux Programming Spring 2008
2018 봄학기 Pusan National University School of CSE
Kernel Programming Environment
Internet Protocol and Programming
쉽게 풀어쓴 C언어 Express 제2장 프로그램 작성 과정 C Express.
작은 분야의 일을 훌륭하게 해내는 자그마한 도구들을 개발자들에게 제공하고 개발자들은 이 도구들을 창의적으로 결합하여 사용하자.
프로젝트 포트폴리오 요약 프로젝트 종류 프로젝트 이력 역할 주요 기술 : Windows System Application
Lecture Notes on Computer Networks 주 홍 택 컴퓨터공학과 계명대학교
editing program files with vi 기본적인 Linux commands
Fflush 사용이유 및 방법 [이유] 키보드에서 입력된 내용은 입력버퍼에 저장되었다가 Enter 키가 들어오면 프로그램으로 전달됨 이 때 입력버퍼에 있는 Enter 키도 프로그램으로 전달됨 그러므로 아래와 같은 프로그램에서 문자 하나를 입력해도 Enter키도 입력된 것으로.
소프트웨어 형상관리: 목차 변경 및 형상관리의 기초 개념 형상항목 확인 및 버전관리 변경관리 감사 및 감사보고 99_11
Operating System Multiple Access Chatting Program using Multithread
운영체제의 종류 장승빈.
누구나 즐기는 C언어 콘서트 제2장 기초 사항 IT응용시스템공학과 김형진 교수.
쉽게 풀어쓴 C언어 Express 제2장 프로그램 개발 과정 C Express.
C언어 개론.
GDB - GNU Debugger 김진용.
1학기 정리 지난 학기에 배운 내용을 복습해 본다..
HW #2 (1/2) UNIX 파일과 디렉토리 1. 자신의 HOME 디렉토리 아래에 다음과 같은 구조의 디렉토리 및 파일을 생성하고, 이 구조를 다음과 같은 명령을 사용하여 파일로 저장한 후 메일로 제출할 것 $ ls –lR unix > hw2-1 $HOME unix.
Internet Protocol and Programming
㈜홍길동 웹사이트 구축 진행 계획서 견적서 포함 일레븐 제공.
C.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
C프로그래밍 도구 컴퓨터공학과 강성인.
이성준 Library 만들기 이성준
Presentation transcript:

Beginning Linux Programming 한양대학교 전자전기컴퓨터공학부 3학년 실험 1주차

목 차(Context) 배경 소개 공지 사항 개발 환경 소개 UNIX LINUX GNU & FSF 시스템 관리팀 연락처 Workstation 실 사용 안내 계정 안내 개발 환경 소개 개발 환경 C 컴파일러 사용하기 헤더 파일 정적 라이브러리 동적 라이브러리

배경 소개 UNIX LINUX GNU & FSF

UNIX? AT&T의 부설 Bell 연구실에서 개발 1974년 C언어로 작성된 최초의 OS Solaris, FreeBSD, OpenBSD, System V ..

LINUX? Linux = Unix Clone Linus Torvalds(헬싱키 대학) 제안 + 전세계 유닉스 프로그래머 개발 Slackware, SuSE, Debian, Red Hat, ..

GNU & FSF GNU GNU Project FSF(Free Software Foundation) GNU is Not UNIX. GNU Project developing a complete UNIX style OS which is free software (LINUX) FSF(Free Software Foundation) Preserve, protect and promote the freedom to use, study, copy, modify, and redistribute computer software, and to defend the rights of Free Software users.

공지 사항 시스템 관리팀 연락처 Workstation 실 사용 안내 계정 안내

시스템 관리팀 연락처 Hompage : http://eece.hanyang.ac.kr E-mail :toggiya@ece.hanyang.ac.kr 02-2282-0579

Workstation 실 사용 안내 웍스테이션 실 사용 가능 시간 네트웍을 통한 원격 접속 방법 ssh를 사용하여 접속 평일 : 13시 ~ 21시 네트웍을 통한 원격 접속 방법 네트웍으로 접근 가능한 웍스테이션 apollo, baccus, quassar, diana, eros, kalypso, hercules, artemis, iccarus, muja, cupid, neptune, xanadu, rapier, pluto, titan ssh를 사용하여 접속 Putty 사용 추천(Google에 putty 검색해서 다운로드) xxx.hanyang.ac.kr 서버에 접속 [test@apollo guest]$ ssh artemis.hanyang.ac.kr 계정 입력 암호 입력

계정 안내 계정당 할당된 디스크 용량 150MB 사용자 홈디렉토리 /home/data1/계정이름 프린트시 lp 명령을사용 (개인당 100장씩 사용가능, 100이상 사용자는 관리자에게 연락할 것)

개발 환경 소개 개발 환경 C 컴파일러 사용하기 헤더 파일 정적 라이브러리 동적 라이브러리

개발 환경 VI Editor GCC C Compiler GDB Debugger

C 컴파일러(실습) C Program을 만들기 위해서 Editor로 vi를 사용한다. [test@apollo guest]$ vi ~ VIM - Vi IMproved ~ ~ version 6.1.320 ~ by Bram Moolenaar et al. ~ Vim is open source and freely distributable ~ Help poor children in Uganda! ~ type :help iccf<Enter> for information ~ type :q<Enter> to exit ~ type :help<Enter> or <F1> for on-line help ~ type :help version6<Enter> for version info 0,0-1 All

C 컴파일러(실습) 다음 명령을 실행한다. [test@apollo guest]$ vi filename.c ~ "filename.c" [New File] 0,0-1 All

C 컴파일러(실습) 위의 화면에서 “i“를 누르면 파일의 내용을 쓸 수 있게 된다. ~ -- INSERT -- 0,1 All

C 컴파일러(실습) File:filename.c 1 #include <stdio.h> 2 3 int main() 위와 같은 상태에서 다음과 같은 Code를 작성한다. File:filename.c 1 #include <stdio.h> 2 3 int main() 4 { 5 printf("Hello World\n"); 6 exit(0); 7 }

C 컴파일러(실습) int main() { printf("Hello World\n"); exit(0); } 위와 같은 작업을 수행한 후 작성한 내용을 저장하여야 하는데, shift + : 키를 누르면 화면 아래에 “ : “ 표시가 생긴다. 여기에 “wq” 명령을 수행하면 filename.c라는 파일이 만들어 진다. int main() { printf("Hello World\n"); exit(0); } ~ "filename.c" [New] 8L, 76C written [test@apollo guest]$

C 컴파일러(실습) [test@apollo guest]$ cc –o filename filename.c 수행 후 아무런 error 메시지가 나오지 않았다면 두개의 파일을 볼 수가 있다. [test@apollo guest]$ cc –o filename filename.c [test@apollo guest]$ ls -al total 40 drwxr-xr-x 4 test user 4096 Aug 27 02:11 . drwxr-xr-x 6 test user 4096 Aug 5 03:21 .. -rwxr--r-- 1 test user 11641 Aug 27 02:11 filename -rw-r--r-- 1 test user 76 Aug 27 02:11 filename.c [test@apollo guest]$

C 컴파일러(실습) [test@apollo guest]$ ./filename Hello World 화면의 두 파일 중 초록색의 파일이 실행 파일이다. ./filename 이라 명령을 입력한 후 실행 시켜본다. “ ./ “ 이 명령은 현재 디렉토리를 의미한다. 위의 명령의 수행 결과로 다음과 같은 화면이 나타난다. [test@apollo guest]$ ./filename Hello World [test@apollo guest]$

헤더파일 [test@apollo guest]$ cc –I/usr/openwin/include fred.c C언어 및 기타 프로그래밍 언어에서의 상수 또는 시스템 라이브러리를 호출하기 위한 함수들은 /usr/include 에 위치 cc –I/usr/openwin/include fred.c 어떤 함수에 대해 알고 싶을때 grep 명령을 사용할 수 있음 [test@apollo guest]$ cc –I/usr/openwin/include fred.c [test@apollo guest]$ cd /usr/include [test@apollo include]$ grep EXIT_ *.h ... stdlib.h:#define EXIT_FAILURE 1 stdlib.h:#define EXIT_FAILURE 0 [test@apollo include]$

라이브러리 파일 라이브러리(library) 라이브러리의 종류 재사용이 가능하도록 작성된 컴파일된 함수의 모음 표준 시스템 라이브러리는 /lib 와 /usr/lib에 위치 라이브러리의 이름은 lib로 시작 라이브러리의 종류 정적 라이브러리 (확장자 .a) 공유 라이브러리 (확장자 .so, .sa)

라이브러리 파일 [tes@apollo /guest]$ cc –o fred fred.c /usr/lib/libm.a fred.c 를 컴파일 하는데, 실행 파일의 이름은 fred를 사용하고 수치 연산 라이브러리를 사용 여기서 -lm 은 표준 라이브러리 디렉토리인 /usr/lib의 libm.a 를 의미 [tes@apollo /guest]$ cc –o fred fred.c /usr/lib/libm.a [tes@apollo /guest]$ cc –o fred fred.c –lm

정적 라이브러리 라이브러리 사용 확장자 .a ar(archieve) 프로그램 작성시 함수의 선언이 포함된 헤더 파일을 include 확장자 .a ar(archieve) 정적 라이브러리 생성, 관리 프로그램

실습하기 – 정적 라이브러리 #1 File:fred.c 1 #include <stdio.h> 2 3 void fred(int arg) 4 { 5 printf("fred: you passed %d\n", arg); 6 } File:bill.c 3 int bill(char* arg) 5 bill("bill:you passed %s\n", arg); 6 exit(0); 7 }

실습하기 – 정적 라이브러리 #2 [test@apollo guest]$ cc –c fred.c bill.c [test@apollo guest]$ ls *.o bill.o fred.o [test@apollo include]$ File:lib.h 1 /* 2 This is lib.h. It declares the functions 3 fred and bill for users 4 */ 5 6 void bill(char *); 7 void fred(int);

실습하기 – 정적 라이브러리 #3 File:program.c 1 #include "lib.h" 2 3 int main() bill() 과 fred() 를 시험하기 위해 program.c 파일을 작성 File:program.c 1 #include "lib.h" 2 3 int main() 4 { 5 bill("Hello World"); 6 exit(0); 7 } [test@apollo guest]$ cc –c program.c [test@apollo guest]$ cc –o program program.o bill.o [test@apollo guest]$ ./program bill: you passed Hello World [test@apollo guest]$

실습하기 – 정적 라이브러리 #4 [test@apollo guest]$ ar crv libfoo.a bill.o fred.o ar 을 사용하여 라이브러리가 생성한 뒤 라이브러리 목차를 정리하기 위해 ranlib를 사용한다. [test@apollo guest]$ ar crv libfoo.a bill.o fred.o a – bill.o a – fred.o [test@apollo guest]$ ranlib libfood.a [test@apollo guest]$ cc –o program program.o libfood.a bill: you passed Hello World [test@apollo guest]$

공유 라이브러리 정적 라이브러리의 단점 공유 라이브러리의 등장 Windows와 비교 많은 프로그램이 같은 라이브러리 함수를 사용할 때 메모리 낭비 공유 라이브러리의 등장 프로그램이 함수 코드 자체를 가지는 것이 아니라 실행시 유효한 공유 코드에 대한 참조를 가지도록 링크된다. Windows와 비교 .so : .DLL .sa : .LIB