본문 바로가기

공부/Linux

[Linux] 리눅스 환경에서 c 파일 컴파일 후 실행하기

리눅스 환경에서 c 파일 컴파일 후 실행하는 방법을 설명하는 글이다.

Window에서 Ubuntu를 사용한다.

 

 

 

 

 

 

vi main.c

 

main.c 파일을 만들어준다.

 

i를 눌러 편집 모드로 들어간 뒤 아래 C 코드를 입력해준다. 해당 C 코드를 실행해보겠다. 입력이 끝났으면 Esc->:wq->Enter을 눌러서 터미널로 돌아오자.

#include <stdio.h>
void main(){
	printf("Hello, World!\n");
}

 

 

리눅스 환경에서 C 파일을 컴파일 하기 위해서는 GCC가 필요하다. GCC (GNU Compiler Collection)는 C, C++ 등 다양한 프로그래밍 언어를 컴파일할 수 있는 컴파일러이다. 주로 C 언어 컴파일러로 많이 사용된다. GCC를 다운받아보자.

 

 

sudo apt update

 

패키지 목록을 최신 상태로 업데이트 한다.

sudo: 관리자(root) 권한으로 실행
apt: 패키지 관리 도구 (Advanced Package Tool)
update: 패키지 목록을 업데이트

 

 

sudo apt install -y gcc

 

GCC를 설치한다.

-y: 모든 질문에 Yes를 자동 응답하여 사용자 확인 없이 설치를 진행한다.

 

 

gcc --version

 

GCC의 버전을 확인한다. 정상적으로 출력되면 설치가 완료된 것이다. 이제 아까 만들었던 main.c를 컴파일 해보자.

 

 

 

gcc -Og -o hello main.c

 

main.c를 컴파일해서 hello라는 실행파일을 생성한다.

-Og: 디버깅에 최적화된 수준으로 컴파일하도록 설정

-o hello: 출력 파일 이름을 hello로 설정, 기본적으로 실행 파일은 a.out으로 생성됨

main.c: 컴파일할 소스 코드 파일

 

 

ls

 

현재 디렉터리를 보여준다.

hello 파일이 생성되었으면 컴파일에 성공한 것이다. 그럼 이제 파일을 실행해보자.

 

 

./hello

 

현재 디렉터리에 있는 실행 파일 hello 파일을 실행한다. Hello, World!가 제대로 출력되면 성공이다.

.: 현재 디렉터리

/hello: hello라는 실행파일

 


 

 

그런데 왜 ./을 붙여야만 할까? 왜냐하면 리눅스에서는 기본적으로 현재 디렉터리(.)가 실행 경로(PATH)에 포함되어 있지 않기 때문이다. 이 때문에 실행 파일을 실행할 때 디렉터리 경로를 명시적으로 지정해야 한다. 만약 hello만 쳐도 실행이 되도록 하고 싶다면 PATH 경로에 hello를 옮기거나 PATH를 바꿔주면된다.

 

먼저 PATH 경로에 hello를 옮겨보자.

echo $PATH

 

현재 PATH 환경변수의 값을 출력한다. 해당 경로 중 하나로 hello를 옮기면 된다.

 

 

sudo mv hello /usr/local/bin

 

hello 파일을 /usr/local/bin으로 옮겼다. 위치는 PATH에 있는 아무 경로에다가 옮기면 된다.

 

 

hello

 

이제 hello만 쳐도 Hello, World!가 정상적으로 출력되는 것을 볼 수 있다. PATH 경로에 hello 파일을 옮겼기 때문이다. 그렇다면 파일을 옮기지 않고 PATH를 변경하여 실행을 시켜보자.

 

우선 hello 파일을 원래 위치로 옮기자.

 


 

sudo mv /usr/local/bin/hello ~

 

hello 파일을 처음 디렉터리로 옮겼다. ls를 쳐서 hello 파일이 있는지 확인하자.

 

 

pwd

 

현재 디렉터리의 전체 경로를 출력한다. hello 파일이 위치한 경로가 어딘지 복사하자. 필자의 경우 /home/user이다.

 

 

export PATH=$PATH:/home/user

 

환경변수를 설정한다. PATH 환경변수는 $PATH(PATH 기존 값)에다가 /home/user 경로를 추가하여 재설정한다. 이제 hello 치면 정상적으로 작동하는 것을 볼 수 있다. 참고로 터미널을 닫았다가 다시 열면 PATH는 처음 상태로 돌아간다.

 

그렇다면 영구적으로 환경변수 값을 바꾸고 싶으면 어떻게 해야 할까?

 

 


 

Ubuntu가 재부팅될 때 항상 /etc/profile (모든 사용자에게 적용되는 파일), ~/.profile (현재 사용자에게 적용되는 파일)을 무조건 실행시킨다

 

vi /etc/profile
// 또는 vi .profile

 

i를 눌러 편집모드에 들어간다. 마지막 줄의 아래 코드를 추가해준다.

 

 

export PATH=$PATH:/home/user

 

환경변수를 설정한다. 코드를 다 입력했으면 Esc->:wq->Enter을 통해 터미널로 빠져나온다.

 

 

source .profile(본인이 수정한 파일의 이름)

 

수정한 파일(.profile)을 적용시킨다.

 

 

이제 Ubuntu를 껐다 켜도 환경변수가 유지가 되는 것을 볼 수있다.