반응형
시스템 프로그래밍 기반 요소
- 시스템 콜
- 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
반응형
'Computer Science' 카테고리의 다른 글
쉘 스크립트 (0) | 2022.01.14 |
---|---|
시스템 프로그래밍 - 프로세스 관리 (0) | 2022.01.10 |
시스템 프로그래밍 - 쉘 사용법 (0) | 2022.01.06 |
시스템 프로그래밍 - 리눅스 (0) | 2022.01.03 |
파일 시스템 (0) | 2022.01.03 |
댓글