gcc로 컴파일과 링크작업을 각각 따로 수행하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 1,550 조회
- 0 추천
- 목록
본문
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 소스파일을 가지고 실행파일을 만들어내는 컴파일이라는 것은 컴파일작업과 링크작업을 함께 수행한다는 것을 의미합니다.
관련자료
-
이전
-
다음