105 – GCC 실행하기

gcc의 실행 원리를 이해하기 위해 우리는 아주 간단한 예제를 다시 불러오기로 하였다. 바로 “Hello World”를 출력하는 예제이다. file.c 파일을 만들고 hello world를 출력하는 프로그램을 다시 짜보겠다.

20170606_222213

이 파일을 저장한 다음에 gcc를 이용하여 파일을 컴파일하여 보겠다.

20170606_222235

[gcc “소스파일이름”] 과 같은 구조를 이용하여 gcc를 이용하여 컴파일을 진행하였고, 진행 후 프롬프트($)가 그대로 나오면 컴파일이 성공한 것이다. 그럼 이제 컴파일 후에 어떤 파일이 생성되었는지를 확인하자.

20170606_222243

a.out이라는 파일이 추가로 생성된 것을 볼 수 있는데, a.out이 바로 실행 가능한 링킹까지 전부 완료된 파일이다. 컴파일 도중에 만들어지는 파일은 디스크에 저장되지 않는 파일도 있고, 않을 수도 있다고도 이전 글에서 작성하였는데, 아무 옵션이 없어서 그냥 바로 실행 파일까지 만든 것이다.

이 파일을 실행하기 위해 a.out을 입력하여 보자.

20170606_222301

우리가 전에 실행하던 방식(./a.out)과는 다르게 실행하였는데, 적고 싶은 내용이 있어서 좀 정리했다.

위와 같이 명령을 찾을 수 없다는 오류가 발생하는 것을 볼 수 있다. 이는 a.out이 저장된 디렉토리를 path로 설정하지 않았기 때문이다. 터미널에서 실행되는 명령어들은 해당 명령어로 된 실행 파일을 실행하는 것인데, 그 실행 파일들이 path라는 터미널의 명령어 실행 쉘의 path변수에 지정되어 있다. 그렇기 때문에 우리가 직접 만든 a.out은 터미널 명령 쉘에 등록되지 않은 명령어로 인식되었기 때문에 명령을 실행할 수 없습니다라는 오류를 나타내는 것이다.

그럼 우리가 전에 쓰던 “./a.out”이라는 것은 어떤 것인가? 바로 현재 디렉토리 위치 정보인 “./”명령어와 같이 실행된 것이다. 그래서 현재 디렉토리임을 확인하는 명령과 함께 현재 디렉토리에 있는 a.out을 실행한 것이다.

20170606_222309

지금까지 우리가 C언어를 배우면서 예제 코드를 컴파일하기 위한 gcc의 실행 법과 실행을 위해 항상 적어왔던 ./a.out이 어떤 것인지를 알 수 있었을 것이다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.