Computer Science
시스템 프로그래밍 핵심 기술
개발자 데이빗
2022. 1. 9. 15:03
반응형
시스템 프로그래밍 기반 요소
- 시스템 콜
- C 라이브러리
- C 컴파일러
API
- 응용 프로그램과 분리된 하위 호환 인터페이스
- ex) 시스템 콜 래퍼, 입출력 라이브러리 등
- 동적, 정적 라이브러리가 있음
C 라이브러리
- 유닉스 C 라이브러리 - libc
- 리눅스 C 라이브러리 - GNU libc-glibc (지립씨, 글립씨)
- 시스템콜, 시스템콜 래퍼, 기본 응용 프로그램 기능 포함
C 컴파일러
- 유닉스 C 컴파일러 - cc
- 리눅스 C 컴파일러 - GNU cc- gcc (지씨씨)
- 리눅스에 gcc 설치
sudo apt-get install gcc
GCC 컴파일 과정
$ gcc -o test test.c
(1) 전처리기 | 소스 파일의 전처리기 부분을 처리하고 test.i 임시파일을 생성 |
(2) C컴파일러 | 전처리된 파일 test.i로부터 어셈블리어로 된 test.s를 생성 |
(3) 어셈블러 | 어셈블리어 파일 test.s로부터 오브젝트 파일 test.o를 생성 |
(4) 링커 | 오브젝트 파일 test.o로부터 실행파일 test를 생성한다. |
ABI (Application Binary Interface)
- 응용 프로그램 바이너리 인터페이스
- 함수 실행 방식, 레지스터 활용, 시스템 콜 실행, 라이브러리 링크 방식 등
- ABI가 호환되면 재컴파일 없이 동작
- 컴파일러, 링커(라이브러리 링크), 툴체인(컴파일러를 만드는 프로그램)에서 제공
C 언어 표준 - ANSI C
유닉스 시스템 프로그래밍 인터페이스 표준 - POSIX
반응형