본문 바로가기

BackEnd/Linux

Linux / network - 리눅스기초를 활용한 데이터 통신 3(리눅스 명령어, nano 단축키, make사용법, 리눅스 컴파일, 오브젝트파일)

안녕하세요

 

인포돈입니다

이번에 OS의 네트워크에 대해서 학습을 해보면서 이를 정리한 내용을 적어보려 합니다.

그러나 본 내용은 이론보다는 문제 및 실습 위주로 작성했음을 알려드립니다~

본 내용은 우분투를 기본으로 작성되었습니다.
본 내용은 Cloud Computing을 활용하여 작성되었습니다.

이번에는 우분투에서 shell을 활용한 간단한 실습들에 대해서 알아보겠습니다.


리눅스 명령어

이번 포스팅에서는 기본적인 코딩을 하기 전에 앞서서 배운 리눅스 명령어와 같이 실용적인 명령어를 몇 개 소개하려 한다.

 

 apt-cache

apt-cache			//현재 설치되어 있는 패키지 종류를 출력
apt-cache pkgnames		//설치할 수 있는 패키지 이름 출력
apt-cach search vsftpd		//매운 안전한 ftp 데모를 찾는 명령어
apt-cache showpkg vsftpd	//패키지 의존성을 보여주는 명령어

많이 사용되지는 않지만 패키지에 대한 명령어이다.

 

apt-get

sudo apt-get update		//패키지를 가져오기 앞서 정보를 가져와 캐시를 수정하는 명령어
sudo apt-get upgrade		//모든 패키지를 업그레이드 하는 명령어
sudo apt-get install 설치할것	//패키지 설치
sudo apt-get remove 삭제할것	//패키지 삭제

이 또한 거의 한 번만 사용하면 되는 패키지 활용 명령어이다.


nano 편집기 명령어

이번 Linux에서는 여러 editor 중에서도 기본인 nano editor를 활용하기 때문에 기본적인 파일 생성에서부터 컴파일까지의 명령어에 대해서 알아본다.

 

nano hello.c

hello.c 파일을 생성한다. -> 해당 명령어를 입력하면 c언어 파일이 생성되며 우리가 코딩을 하면 된다.

 

이때 자주 사용되는 nano 기본 단축기를 설명하면 다음과 같다. (거의 3가지만 사용했다.)

단축키 작동
ctrl + g 도움말 표시
ctrl + x nano 종료
ctrl + o 현재 편집 중인 파일 저장

이외에 다른 키들이 있지만, 주로 3가지만 활용해도 충분하다. (이외의 단축키가 궁금하면 nano 단축키를 검색하면 된다.)

그리고 주의점은 우리가 사용하는 다른 ide와 는다르게 마우스로 커서 이동이 불가능하다는 점이다.


컴파일 방법

이제 hello.c파일을 만들었다면, 이를 실행시켜야 한다. 실행시키기 위해서는 실행파일이 있어야 한다. 이전까지는 그냥 hello.c인 c언어 파일이기 때문이다.

 

따라서 컴파일을 통해 실행파일을 생성하면 된다.

gcc hello.c

gcc명령어를 통해서 hello.c파일을 실행파일로 만든다. 이런 식으로 마디면, a.out // b.out 이런 식으로 만들어지게 되는데 이를 자신만의 이름의 실행파일로 만들려면 아래와 같이 -o옵션을 붙여줘야 한다.

gcc hello hello.c

hello.c 파일을 hello라는 이름의 실행파일로 만들라는 의미이다.

 

예제를 하나 들어서 한 단계 더 들어가 볼 수 있다.

 

 - main.c 파일

void mian(){
	print("hello");
	world();
}

 - world.c파일

void world(){
	printf("world");
}

이런 식의 2개의 c파일을 만들었다고 가정해보자

이런 식의 2개의 파일의 연동하려면 어떻게 해야 할까?

 

바로 extern를 사용하는 것이다.

extern void world();
void mian(){
	print("hello");
	world();
}

이런 식으로 extern을 붙여준다면, main파일에서 외부에 있는 world파일을 참조할 수 있도록 도와준다.

 

이렇게 여러 파일을 한 번에 컴파일할 때는 linkcompile을 사용한다. 사용 방법은 간단하다.

 

gcc -o linkcompile main.o world.o

여기서. c가 아닌. o인 이유와 만드는 법에 대해서 약간의 설명을 붙이자면, 아주 간단하다.

 

우리가 처음 만든 파일은. c파일이다.

main.c가 만들어진다. 이를 컴파일을 통해 기계어로 변환해 주는데 그 파일이 바로 main.o파일이다. 이제 이 파일이 링크 과정을 통과하여 우리가 보는 a.out 과같은 실행파일이 만들어지는 것이다.

 

그런데 이러한 과정에서 우리는 앞서 보았듯이 소스파일이 1개일 때는 단순히

gcc -o main main.c를 통해서 실행파일을 생성하였다. 그러나 소스파일이 여러 개일 경우 -c의 명령어를 붙여서 목적 파일을 생성하고 이를 묶어줘야 한다.

 

gcc -c main.c
gcc -c world.c

이 명령을 통해서 각각 main.o, world.o파일을 생성한 후 위 명령을 이행하면 된다.


make명령어

우선, make가 무엇이냐면, 바로 여러 개의 파일을 쉽게 컴파일할 때 사용합니다.

make를 활용하기 위해서는 makefile를 만들어야 합니다.

 

아래와 같이 따라 하시면 됩니다.

nano makefile
TARGET=main
OBJECTS=main.o world.o
$(TARGET) : $(OBJECTS)
	gcc -o $(TARGET) $(OBJECTS)
main.o : main.c
	gcc -c main.c
world.o : world.c
	gcc -c world.c

이런 식으로 makefile을 만듭니다.

그 후 그냥 명령어 make만 작성해 준다면 실행파일 main이 만들어지며 main.c파일과 world.c파일이 링크가 되어 실행파일이 생성됩니다.

 

뭐 길게 설명하면 설명할 수 있지만, 되도록이면 간단히 설명해드리려고 합니다.

TARGET, OBJECTS 이 2개는 변수라고 생각하면 됩니다.

TARGET과 OBJECT를 통해서 실행파일을 만들죠

앞서 말한 대로. O파일을 만들기 위해서

아래 4줄을 작성해준 거랍니다.

 

사실 이번 시리즈에서는 make파일을 자주 사용하지 않기 때문에 간략히 설명만 했습니다.