본문 바로가기

IT/Linux

[Linux] gcc와 리눅스 커널

GCC는 컴파일러입니다.  컴파일러의 패스를 보면 쉽게 쉽게 이해 됩니다.

전처리기 -> 컴파일러 -> 어셈블러 -> 링커

 

이 과정으로 되는 것을 GCC 하나로 모두 진행 시켜서 소스 파일을 실행 파일로 생성 시켜 줍니다.

 

전처리기는 cpp(C pre processor) 이며, 소스 파일의 주석 제거 및 define을 치환하는 기능 등을 합니다.

그다음은 cc 이며, C Compiler 입니다.  이것은 전처리기를 거친 소스 파일을 어셈 파일로 변환합니다.

그다음은 as 이며, assmeber 입니다.  이것은 에셈파일을 오브젝트 파일로 변환해주십니다.

마지막으로 ld 이며, linker 입니다.  이것은 오브젝트 파일들을 묶어서 실행 파일로 변환해 줍니다.


컴파일러 호환성

GCC는 리눅스 커널 소스의 기본 컴파일러이다. 2004년, 인텔 자사의 C 컴파일러가 컴파일할 수 있도록 커널을 수정했다고 주장하였다.[36] 2009년 2.6.22 커널의 수정판에서 이같은 또다른 성공이 보고되었다.[37][38]

2010년 이후로 C 언어의 다른 컴파일러인 클랭으로 리눅스 커널을 빌드하려는 노력이 진행되고 있다.[39] 2014년 4월 12일 기준으로 공식 커널은 대부분 클랭으로 컴파일이 가능하다.[40][41] 이러한 노력에 따른 프로젝트의 이름은 LLVMLinux이며, 이는 클랭 기반 LLVM 컴파일러 구조를 따른 것을 뜻한다.[42] LLVMLinux는 리눅스 커널이나 LLVM을 포크하는 것이 목적이 아니기 때문에 업스트림 프로젝트에 제출되는 패치들로 구성된 메타 프로젝트로 볼 수 있다. 클랭으로 리눅스 커널을 컴파일할 수 있음으로 인한 이점에는 GCC 대비 더 빠른 컴파일 속도가 있으며 커널 개발자들은 더 짧아진 컴파일러 시간으로 인해 더 빠른 워크플로의 이점을 취할 수 있게 된다.

 

 

 

 

리눅스 커널 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 리눅스 커널(Linux kernel)은 오픈 소스 모놀리딕 유닉스 계열 컴퓨터 운영 체제 커널이다. 리눅스 계열의 운영 체제는 이 커널에 기반을 두며 개인용 컴퓨터와 서

ko.wikipedia.org

 

'IT > Linux' 카테고리의 다른 글

[Linux] 동적 라이브러리 만들기  (0) 2020.08.28
정적 라이브러리 만들기  (0) 2020.08.28
vi 편집기 문자열 찾기  (0) 2020.07.30
[Linux] sh파일로 gcc 컴파일  (0) 2020.07.30
gcc 컴파일  (0) 2020.07.17