CS/리눅스(Linux)

Linux(리눅스) 컴파일의 전체적 과정 (윈도우와 차이점) [컴공과고씨]

시간빌게이츠 2022. 9. 20. 18:35
반응형

Editor(편집기) : 윈도우에서는 visual studio와 같은 편집기를 사용한다면, 리눅스에서는 vi라는 편집기를 사용합니다. 

 

1. 그래서 편집기 vi에서 소스파일들을 작성을 하겠죠.

2. 여기서 만든 소스파일들을 컴파일러(gcc, g++)을 통해 object 파일로 만들어줍니다. *gcc->c, g++->c++

    파일 확장자는 *.c ->*.o 로 됩니다.

이때 한 개의 소스파일 당 하나의 object 파일을 만들게 됩니다.

 

*여러개의 소스파일 중 어떤 소스파일들을 object파일로 할지를 결정하는 것이 윈도우 visual studio에서는

프로젝트라고 볼 수 있습니다. 리눅스에서는 그 역할을 하는 것이 make 입니다.

make file은 object파일로 만들 소스파일들을 지정해주고 make라는 명령어를 사용하여 object파일로 만들어 줍니다.

 

여러개의 소스파일을 이제 object파일로 만들었다면 이것을 하나의 실행파일로 이어주어야 합니다.

그것을 바로 Linking이라고 합니다. Linking을 수행하는 애를 Linker라고 합니다.

이때 object 파일 뿐만 아니라 library도 링킹을 하게 됩니다.

아까 말했든 make file에 있는 소스파일은 사용 여부에 상관없이 무조건 linking됩니다.

하지만 Library은 경우 우리가 사용한 함수들 혹은 class만 linking이 됩니다.

*library : 개발할 때 많이 사용되는 함수 혹은 class들을 미리 만들어 둔 곳. 그래서 쓴것만 가져다 씀.

*리눅스에서 library의 확장자는 *.a 입니다.

 

이렇게 링킹을 통해 하나의 실행파일을 만듭니다.

윈도우에서는 .exe라는 파일로 나오지만

리눅스에서는 따로 이름을 지정해주지 않으면 a.out이라는 하나의 실행파일로 나오게 됩니다.

 

그리고 마지막으로 컴파일, 링킹 이 과정들은 debugging을 통해 어디서 오류가 났는지 오류를 잡아낼 수 있습니다.

디버거의 이름은 gdb입니다.

 

반응형