반응형
자유 소프트웨어 재단
리처드 스톨만이 자유 소프트웨어의 생산과 보급을 장려하기 위해 창립한 재단
자유 소프트웨어
- 목적에 상관없이 프로그램을 실행시킬 수 있는 자유
- 필요에 따라서 프로그램을 개작할 수 있는 자유(이러한 자유가 실제로 보장되기 위해서는 소스 코드를 이용할 수 있어야만 한다. 왜냐하면 소스 코드 없이 프로그램을 개작한다는 것은 매우 어려운 일이기 때문이다.)
- 무료 또는 유료로 프로그램을 재배포할 수 있는 자유
- 개작된 프로그램의 이익을 공동체 전체가 얻을 수 있도록 이를 배포할 수 있는 자유
- // free의 뜻은 무료가 아닌 자유를 뜻함
GNU(GNU is Not Unix) Project
- GNU는 운영 체제의 하나이자 컴퓨터 소프트웨어의 모음집
- GNU는 온전히 자유 소프트웨어로 이루어졌으며, 그 중 대부분이 GNU 프로젝트의 GPL 라이센스
- 포트란과 같은 프로그래밍 언어에서 생기는 문제점을 해결하기 위해 처음부터 다시 제작한 컴파일러가 GCC 컴파일러.
GCC 컴파일러
- GNU Compiler Collection의 약자
- GNU 프로젝트의 일환으로 개발되어 널리 쓰이고 있는 컴파일러
- 원래는 C언어만 지원했으나 점차 다양한 언어로 확대
GCC 동작 과정
- 전처리 과정
- 전처리기인 cpp0에 의해 .i 파일 생성
- 컴파일 과정
- C 컴파일러인 cc1으로 .s 파일 생성
- 어셈블 과정
- 어셈블러인 as에 의해서 .o 파일 생성
- 링킹 과정
- 링커인 collect2로 실행파일 생성
파일 확장자
.so
리눅스 프로그램의 공유 라이브러리 파일
.a
리눅스 프로그래밍 라이이브러리 파일
.c
C 프로그램의 소스 파일
.i
C언어에서 전처리 후 소스
.s
어셈블리어로 변환된 s 확장자를 가진 파일 (어셈블리소스)
.o
C 소스 프로그램을 컴파일 할 때 생기는 목적 코드 파일
2진수로 이루어진 기계어로 된 파일
GCC 설치 및 사용법
GCC를 Linux 및 WSL에서 설치하는 방법과 GCC 동작 과정을 직접 실행해보고 싶다면 아래 글을 참고하세요.
2023.08.31 - [Programming Language/C] - Visual Studio Code, WSL2, GCC를 이용한 C언어 개발 환경 구축하기
출처
본문 출처
- “GCC 동작 과정”, 티스토리 『김도라』, 2018.08.13, https://kimdora.tistory.com/entry/GCC-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95.
- "자유 소프트웨어", 위키백과, 2023.03.13 접속, https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4.
- "자유 소프트웨어 재단", 위키백과, 2023.03.13 접속, https://ko.wikipedia.org/wiki/%EC%9E%90%EC%9C%A0_%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EC%9E%AC%EB%8B%A8.
- "GNU 컴파일러 모음", 위키백과, 2023.03.13 접속, https://ko.wikipedia.org/wiki/GNU_%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC_%EB%AA%A8%EC%9D%8C.
- "리눅스에서 파일이름과 확장자", 네이버 블로그 『내게 짐을 얹고 있는 사람은 다른 누가 아닌 바로 나』, Linux, 2005.02.22, https://blog.naver.com/xtheotherx/80010452602.
- "[Extension] *.c, *.i, *.s, *.o", egloos 『Kim bruceKIM.egloos.com』, 2012.03.02, http://brucekim.egloos.com/3301548.
이미지 출처
- "The Official Free Software Foundation Logo", 위키백과, 2020.10.06, https://www.gnu.org/graphics/fsf-logo.html.
- "GNU", 위키백과, 2023.03.13 접속, https://ko.wikipedia.org/wiki/GNU.
반응형