강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

gcc로 컴파일과 링크작업을 각각 따로 수행하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

gcc로 컴파일과 링크작업을 각각 따로 수행하기

 

 

 

 

 

앞의 예에서는 gcc로 컴파일 하는 가장 일반적이고 가장 기본적인 방법을 설명 드린 것입니다.

 

 

 

 

 

그럼 이제 컴파일 과정에 대해서 좀 더 자세히 알아보도록 하겠습니다.

 

 

 

 , 우리가 생각하고 있는 컴파일이라는 개념을 다시 정리해 보겠습니다.

 

 

 

 참고로 C프로그램에 있어서 가장 기본적인 설명이겠지만 이 웹사이트(www.linux.co.kr)에서 C프로그램을 다루는 것은 아니므로 깊이 있는 설명은 생략하고 gcc를 이용한 컴파일과정의 이해에 필요한 부분만을 설명하겠습니다.

 

 

 

 

 

결론적으로 말씀 드리면 앞의 예에서 gcc로 수행했던 컴파일은 컴파일작업+링크작업을 동시에 수행한 것입니다.

 

 

 

 이를 좀 더 정리하면 다음과 같습니다.

 

 

 

 

컴파일작업 : C소스파일을 입력으로 하여 목적파일(object file)을 생성해내는 과정을 의미합니다.

 

 

 

 

 

링크작업 : 컴파일결과 생성된 목적파일들에 필요한 함수들과 라이브러리들을 연결하여 바이너리형태의 실행파일을 만들어내는 과정입니다.

 

 

 

 

 

, 앞의 예에서 gcc superuser.c파일을 컴파일 하면 컴파일과정 후에 링크작업을 자동으로 해 줍니다.

 

 

 

 그리고 링크작업의 결과 실행파일이 생성된 것입니다.

 

 

 

 

 

그렇다면 이번 예에서는 컴파일작업과 링크작업을 따로따로 수행해 보도록 하겠습니다.

 

 

 

 아래의 예는 gcc컴파일러에 -c옵션을 사용한 것으로 -c옵션은 컴파일작업만 수행할 뿐 링크작업은 수행하지 말라는 옵션입니다.

 

 

 

 , 목적파일만 생성하라는 옵션입니다.

 

 

 

 

 

[root@RockyLinux01 test]# gcc -c superuser.c

[root@RockyLinux01 test]#

[root@RockyLinux01 test]# ls -l superuser*

-rw-r--r-- 1 root root   101  6  8 17:52 superuser.c

-rw-r--r-- 1 root root  1512  6  8 17:57 superuser.o

[root@RockyLinux01 test]#

 

 

 

 

위의 “gcc -c superuser.c”의 결과 생성된 superuser.o파일은 컴파일결과로 생성된 목적파일로서 링크작업이 수행되지 않은 단지 목적파일일 뿐입니다.

 

 

 

 

그리고 이번에는 위에서 생성된 superuser.o라는 목적파일을 가지고 링크작업을 수행하는 예입니다.

 

 

 

 

 

[root@RockyLinux01 test]# gcc -o superuser superuser.o

[root@RockyLinux01 test]#

[root@RockyLinux01 test]# ls -l superuser*

-rwxr-xr-x 1 root root 25800  6  8 17:58 superuser

-rw-r--r-- 1 root root   101  6  8 17:52 superuser.c

-rw-r--r-- 1 root root  1512  6  8 17:57 superuser.o

[root@RockyLinux01 test]#

 

 

 

 

, 위의 예는 “gcc -o superuser superuser.o”는 목적파일(superuser.o)을 가지고 링크작업을 수행한 것입니다.

 

 

 

 그 결과 -o옵션에서 지정한 실행파일명(superuser)으로 실제 실행파일을 생성한 것입니다.

 

 

 

 

 

, 이번 예는 gcc를 이용하여 컴파일작업과 링크작업을 각각 분리하여 수행한 것입니다.

 

 

 

 이번 예에서 말씀 드리고자 하는 것은 우리가 흔히 C 소스파일을 가지고 실행파일을 만들어내는 컴파일이라는 것은 컴파일작업과 링크작업을 함께 수행한다는 것을 의미합니다.

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  175 명