이성준 imggaibi@hotmail.com Library 만들기 이성준 imggaibi@hotmail.com.

Slides:



Advertisements
Similar presentations
5 학년 6 반 김진석.  애니메이션은 라틴어의 아니마 에서 온 것이다. 아니마 는 생명 영혼 정신을 가르키는 것리다.  애니메이션의 원리는 그림을 움직이는 환등기로 만드는데, 환등기는 인간이 가지고 있는 눈의 잔상 을 이용해 만들어 졌다.  최초의 애니메이션 작품은.
Advertisements

아름다운 이들의 행복한 길음안나의 집.
환 영 신입생 도서관 이용 교육 동강대학교 도서관.
SYSTEM CALL (Syscall) CSLAB SEWON PARK.
Lamda on AVR C/C++ 최신 표준과 임베디드의 접목.
제3장 C 프로그래밍 환경.
05. gcc, make, gdb.
1장. 이것이 C 언어다.. 1장. 이것이 C 언어다. 1-1 C 언어의 개론적 이야기 프로그래밍 언어란 무엇인가? 컴파일이란 무엇인가? 사람과 컴파일러가 이해할 수 있는 약속된 형태의 언어 C 언어도 프로그래밍 언어 중 하나이다. 컴파일이란 무엇인가? 프로그래밍.
2014 ITA 8월 강의 C Programming -1주차- C언어 기초 정대진 ( )
리눅스 실습 정성훈.
개발 환경 개발 환경 개요 PXA270과 타겟 시스템 툴체인 환경 구축 JTAG 유틸리티 미니컴 Make 유틸리티
크로스 컴파일 환경 구축.
System Call Linux Kernel 수업 3번째.
제4장 Cross Compiler 설치.
디바이스 드라이버 기초 디바이스 드라이버의 개요 파일 연산 디바이스 드라이버 등록 디바이스 드라이버 구성
디바이스 드라이버 개요 가상 디바이스드라이버 실습
제9장 C 프로그래밍 환경 창병모
컴퓨터의 기초 제 4강 - 표준 입출력, 함수의 기초 2006년 4월 10일.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express.
6장. printf와 scanf 함수에 대한 고찰
누구나 즐기는 C언어 콘서트 제4장 수식과 연산자.
MicroC/OS-II Lab. 경희대학교 컴퓨터공학과 조 진 성.
System Call 구현 기초 (since 2004) (교재에는 7th 2006에 포함)
변수와 자료형.
윤성우의 열혈 C 프로그래밍 윤성우 저 열혈강의 C 프로그래밍 개정판 Chapter 02. 프로그램의 기본구성.
Linux Kernel Programming newsyscall (since 2004~ textbook 7th 2006~)
운영체제 허상복 컴퓨터시스템 연구실
변수와 자료형.
Operating System 5주차 - System Call Analysis -
Beginning Linux Programming
1장. 프로그래밍 언어, C 프로그래밍.
커널 모듈 프로그래밍 (Kernel Module Programming)
HBE-SMIII-SV210 리눅스 커널과 디바이스 드라이버
System Call 구현 기초 Linux 커널의 새로운 시스템 호출 구현은 아래 두 가지 작업으로 구성 커널 수정
실시간 자원 량 정보 제공을 결합한 Heartbeat
1주차: 프로그래밍언어란 무엇인가? C 언어란? C 프로그래밍을 위한 준비
Linux/UNIX Programming
쉽게 풀어쓴 C언어 Express 제7장 반복문 C Express.
Mips cross compile OS LAB.
제 11 장 전처리기.
2장 표준 입출력 표준 입출력 함수의 종류 형식화된 입출력 문자 입출력 문자열 입출력.
문자 디바이스 드라이버 임베디드 시스템.
Linux Kernel Programming newsyscall (since 2004~ textbook 7th 2006~)
Linux Programming Spring 2008
자전거를 배우려면 안장에 올라가 페달을 밟아라.
자전거를 배우려면 안장에 올라가 페달을 밟아라.
제어문 & 반복문 C스터디 2주차.
작은 분야의 일을 훌륭하게 해내는 자그마한 도구들을 개발자들에게 제공하고 개발자들은 이 도구들을 창의적으로 결합하여 사용하자.
Lecture Notes on Computer Networks 주 홍 택 컴퓨터공학과 계명대학교
조 병 규 Software Quality Lab. 한국교통대학교
실습과제 1(조건문, ) 표준입력으로 수축기 혈압을 입력 받아 그에 따른 적당한 표현을 화면에 출력하는 프로그램을 if-else 문을 이용하여 작성.
Operating System Multiple Access Chatting Program using Multithread
-Part2- 제1장 1차원 배열이란 무엇인가.
6장 반복제어문 for 문 while 문 do while 문 기타 제어문.
18장. 다차원 배열 그리고 포인터.
C언어 개론.
쉽게 풀어쓴 C언어 Express 제3장 C프로그램 구성요소 C Express Slide 1 (of 25)
뇌를 자극하는 C 프로그래밍.
GDB - GNU Debugger 김진용.
쉽게 풀어쓴 C언어 Express 제6장 조건문 C Express.
6월 1주 주간메뉴표 NEW 엄마손 조식 쉐프 삼촌 중식 참새 방앗간 석식 ◎원산지 안내 : 쌀(국내산)
▶서류관리 프로그램 1. 로그인….2 2. 서류등록 … 서류도착 서류스티커발행
어서와 C언어는 처음이지 제16장.
argc, argv 의 사용방법 #include <stdio.h>
Makefile
C.
개정판 누구나 즐기는 C언어 콘서트 제3장 변수와 자료형 출처: pixabay.
어서와 C언어는 처음이지 제22장.
프로그래밍 기법 최적화 프로그래밍.
C프로그래밍 도구 컴퓨터공학과 강성인.
Presentation transcript:

이성준 imggaibi@hotmail.com Library 만들기 이성준 imggaibi@hotmail.com

정적 library Compile 정적 라이브러리 생성 라이브러리 목차 생성 검사 Gcc –c file_name 라이브러리로 만들고자 하는 파일을 실행이 불가능한 오브젝트 파일로 만든다. 정적 라이브러리 생성 Ar crv lib&lib_name.a file_name.o 라이브러리로 데이터를 추가하기 위해 ar을 사용한다. 하나의 큰 파일 내에 포함되는 개별적인 자료들의 모음이나 집합체를 생성한다. 라이브러리 목차 생성 Ranlib lib&lib_name.a 라이브러리를 성공적으로 사용하기 위해 라이브러리 목차를 생성할 필요가 있다. GNU 소프트웨어 개발 도구를 사용할 때는 이 과정을 생략하는 것이 가능하다. 검사 Gcc –o runable_name file_name.c L. llib_name 라이브러리를 이용하기 위해 라이브러리의 위치와 이름을 명명하여 야 한다. -L : 라이브러리의 위치 표기 -l : 사용하려는 라이브러리 명 표기

동적 library Rename Compile Library 생성 링크 생성 실제 사용할 링크 생성 검사 라이브러리 경로 추가 만들고자 하는 파일의 이름을 lib&file_name.c로 변경 Compile Gcc –fPIC –Wall –g –c lib&file_name.c Library 생성 Gcc –g –shared –Wl , -soname,lib&file_name.so.0 –o lib&file_name.so.0.0 lib&file_name.o –lc 링크 생성 Ln –sf lib&file_name.so.0.0 lib&file_name.so.0 실제 사용할 링크 생성 Ln –sf lib&file_name.so.0 lib&file_name.so 검사 Gcc –o runable_filename runable_filename.c –L. –lfile_name 동작 안함 라이브러리 경로 추가 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd) Export LD_LIBRARY_PATH

시스템 콜 추가 (1) 시스템 콜 추가를 위해 할일 커널 수정 시스템 콜 번호를 할당한다. Linux2.4/include/asm/unistd.h sys_call_table에 등록한다. Linux2.4/arch/arm/kernel/calls.S 추가할 시스템콜 코드를 작성 Linux2.4/arch/arm/kernel/에 작성 커널에 포함시킨다. Linux2.4/arch/arm/kernel/Makefile 커널을 새로 컴파일한다.

시스템 콜 추가 (2) 새로운 시스템 콜을 사용하는 유저 프로그램을 작성한다. 새로운 시스템 콜을 사용하여 프로그램을 작성한다. 라이브러리를 수정한다. (ar, ranlib)

시스템 콜 추가 (3) sys_call_table syscall number : Linux2.4/include/asm/unistd.h #define __NR_SYSCALL_BASE 0x900000 #define __NR_exit (__NR_SYSCALL_BASE+ 1) #define __NR_fork (__NR_SYSCALL_BASE+ 2) #define __NR_read (__NR_SYSCALL_BASE+ 3) …. #define __NR_wrapper (__NR_SYSCALL_BASE+ 227) sys_call_table : Linux2.4/arch/arm/kernel/calls.S ENTRY(sys_call_table) .long SYMBOL_NAME(sys_ni_syscall) /* 0 */ .long SYMBOL_NAME(sys_exit) /* 1 */ .long SYMBOL_NAME(sys_fork_wrapper) /* 2 */ .long SYMBOL_NAME(sys_read) /* 3 */ .long SYMBOL_NAME(sys_wrapper) /* 227 */ .rept NR_syscalls-216 .long SYMBOL_NAME(sys_ni_syscall) .endr

시스템 콜 추가 (4) 커널 내부의 시스템 콜 코드의 일반적인 형식 asmlinkage int sys_fork(regs) /* arch/arm/kernel/sys_arm.c */ { return do_fork(..); } int do_fork(..) /* kernel/fork.c */ …. /* create new process */ asmlinkage int sys_read(fd, buf, count) /* fs/read_write.c */ ….. /* read data */

시스템 콜 추가 (5) 시스템 콜 추가 예제 (2) 3. 시스템 콜 코드 작성 (kernel/mysyscall.c) asmlinkage int sys_wrapper(int a, int b) { printk(“Hello Linux, I’m in Kernel\n”); return a * b; } 4. Makefile 수정 (kernel/Makefile) O_OBJS = sched.o fork.o exec_domain.o panic.o printk.o \ wrapper.o 5. 커널 재 컴파일

시스템 콜 추가 (6) 시스템 콜 추가 예제 (3) 6. 사용자 프로그램 작성 #include <linux/unistd.h> #include <stdio.h> _syscall2(int, wrapper); int main() { printf(“sum = %d (use wrapper())\n", wrapper(10, 10)); }