linux 사용하기
Post on 23-Jan-2016
72 Views
Preview:
DESCRIPTION
TRANSCRIPT
Linux Linux 사용하기사용하기
2007. 03. 22
목 차목 차
리눅스 명령어 사용방법
vi editor 사용방법
Make 사용방법
RPM 사용방법
Linux Linux 명령어명령어
명령어 히스토리 기능 : history & 화살표키
리눅스는 현재까지 사용한 명령어를 기억하고 있으며 필요할 땐 언제나
그 명령어를 다시 사용할 수 있다 . 특히 복잡하고 긴 명령어일 경우에는 키보드로 다시 입력하기 보다는 이전에 사용했던 명령어를 재사용하는 것이 효율적이다 . 명령어를 다시 사용하는 방법에는 다음과 같이 몇 가지 방법이 있다 .
- 화살표키 이용
- history 기능
위의 명령어를 실행 해 보고 그에 반응들을 아래의 빈칸에 적어 보자 .
man 페이지 활용하기
리눅스나 유닉스시스템에는 외우기 힘들 정도로 많은 명령어가 있다 .
이들 명령어를 모두다 알고 사용할 수 있으면 좋겠지만 어떤 명령어가 있다는 것과 어떤 상황에서 무엇을 알고자 할 때는 어떤 명령어를 사용해야 한다는 것 정도만 알아도 시스템관리를 훌륭하게 할 수 있다 .
시스템관리를 잘하는 관리자는 명령어 도움말 즉 , 매뉴얼 페이지를 잘 활용한다 .
명령어에 대한 도움말이나 사용법 등을 확인하려면 "man 명령어 " 를 사용하라 .
현재 작업디렉토리는 ?
유닉스계의 시스템에서 여기저기 다니면서 작업을 하다보면 현재 내가 어떤 디렉토리에 있는가를 확인해야 할 경우가 있다 . 이때 사용하는 명령어가 pwd이며 현재 디렉토리의 절대 경로를 나타내 준다 .
작업 디렉토리 변경
"change directory"의 약어로 디렉토리를 이동하기 위한 명령어로 원하는 디렉토리로 이동하고자 할 때는 "cd 디렉토리명 " 을 하면된다 . 또한 한번에 이동하기 위해 절대경로로 지정하여 이동할 수도 있다 . 그냥 "cd"라고 하면 자기의 홈 디렉토리로 이동합니다 .
파일이나 디렉토리 복사하기
파일을 복사해 주는 명령어로 DOS의 copy 명령어와 같으며 사용하는 형식은 다음과 같다 .
$ cp <복사할 파일명 > <복사되어 생성될 파일명 >
파일 삭제하기 불필요한 파일을 삭제하기위한 명령어로 "rm"이라는 것을 사용한다 .
DOS의 "del"명령어와 같은 것으로 remove의 약어이다 . 사용하는 형식은 다음과 같다 .
rm 삭제할파일명 파일명 . . . : 지정한 파일만을 지운다 .
rm *.html : html로 끝나는 모든 파일을 지운다 .
rm명령어에는 꼭 알아야하는 옵션이 두가지 있다 . 첫 번째 -r옵션은 디렉토리까지 삭제하기 위한 옵션이며 , 둘째 -f는 삭제하기전에
확인과정없이 강제로 지워버리는 옵션이다 .
파일과 디렉토리의 이동 및 이름 변경
파일이나 디렉토리를 이동하고 싶거나 이름을 변경 하고자 할 때 사용
되어지는 명령어는 mv 이다 . DOS 에서 move 명령어와 흡사하다 .
mv [바꿀파일 또는 디렉토리명 ] [바뀌어질 파일 또는 디렉토리명 ]
디렉토리 만들기와 디렉토리 지우기
필요한 디렉토리를 만들기 위한 명령어로 "mkdir"과 필요없는 디렉토리를 삭제하기 위한 명령어로 rmdir을 사용한다 . rmdir로 디렉토리를 지울 때는 반드시 해당 디렉토리가 비어있어야 하며 비어있지않는 디렉토리를 지우려고 할 때는 "Directory not empty"란 에러메시지를 보여준다 . 그래도 디렉토리와 그안에 들어 있는 파일들까지 한꺼번에 지우기 원한다면 "rm -rf 디렉토리명 " 을 사용하면 된다 .
참고로 mkdir명령어에서 -p옵션은 필요한 디렉토리까지 생성하면서 새로운 디렉토리를 만들어주는 옵션이다 .
소유권 변경하기
유닉스계의 OS에서 파일과 디렉토리에는 파일의 소유권과 그룹소유권이 표시된다 .
"ls -l"로 확인해 보면 3 번째 필드에 해당되는 것이 소유권이며 , 네 번째 필드에 해당하는 것이 그룹소유권이다 . 이들 소유권을 변경할 수 있으며 파일소유권을 변경할때는 "chown"(change owner)이란 명령어를 사용하며 그룹소유권을 변경할때는 "chgrp"(change group)란 명령어를 사용한다 .
사용형식
chown 새로운소유자 변경할파일 ( 디렉토리 )
chgrp 새로운소유그룹 변경할파일 ( 디렉토리 )
파일내용보기 - I 파일의 내용을 볼 수 있는 명령어는 cat과 pg 그리고 head와
tail, strings란 명령어가 있으며 도스의 type 명령어와 같으나 이보다 훨씬 다양하게 활용할 수가 있다 .
cat
지정한 파일의 내용을 보고자 할 때 사용하는 명령어이다 . cat명령어는 보고자하는 파일이 텍스트파일일 경우는 내용을 알아볼 수 있게 출력하지만 , 바이너리파일일 경우에는 내용을 볼 수는 있으나 알 수 없는 문자들로 그 내용을 알기 어렵다 . cat파일은 2 개 이상의 파일이름이 지정되면 모든 파일이 연결되어 보여진다 .
[ 옵션 ] -b : 행번호를 앞에 붙여서 출력한다 .(빈행은 번호를 붙이지 않는
다 .)
-n : 행번호를 앞에 붙여서 출력한다 .(빈행도 번호를 붙인다 .)
파일내용보기 – II
head
head 명령어는 파일내용의 첫부분을 기준으로 출력한다 . 숫자를 지정하
지 않은경우에는 처음 10행만 보여준다 .
tail
tail명령어는 파일내용의 뒷부분을 보고자할 때 사용하는 명령어이다 .
숫자를 지정하지 않은 경우에는 마지막 10행만을 보여준다 . 명령어에 숫자를 지정하면 지정된 숫자 만큼만 출력 해 준다 .
디스크 사용량 확인하기
du
du명령어는 Disk Usage의 약어로 해당 디렉토리의 사용량을 출력해 준다 . 그냥 "du"라고 하면 현재 디렉토리 이하의 개별 디렉토리별로 사용량을 체크해 주지만 "-s"(summary)을 주게 되면 전체사용량을 간략히 표현한다 . 이때 표현되는 단위는 block으로 Kbyte 단위이다 . 이를 좀더 알기쉽게 표현하려면 "-h"(human-readable)라는 옵션을 사용하며 단위로 표시하여 좀더 알기쉽게 표현해 준다 .
df
df는 현재 시스템에서 사용중인 파일시스템 즉 마운트된 디스크 정보와 사용량을 보여준다
압축관련 유틸리티
tar : 여러개의 파일과 디렉토리를 하나의 파일로 묶어주는 유틸리티
compress : 가장 오래된 압축유틸리티
gzip : 압축효율이 좋아 현재 가장 많이 사용되고 있는 압축유틸리티
bzip2 : gzip을 개선하여 나온 압축유틸리티
tar로 파일 묶기
tar는 여러 개의 파일을 하나의 파일로 묶을 수 있으며 묶여진 파일을 다시 풀 수 있는 유틸리티입니다 . 또한 묶여진 파일을 풀기 전에 어떤 파일들이 묶여져 있나를 확인해 볼 수도 있습니다 . 먼저 tar파일의 사용형식은 다음과 같습니다 .
형식 : # tar [옵션 ] 대상파일
tar에 필요한 옵션
c : tar파일을 생성할 때 ( 여러 개의 파일을 하나의 파일로 묶을 때 ) 반드시 사용
d : tar파일과 해당 파일시스템간의 차이점을 확인하고자 할 때 사용
r : tar파일에 다른 파일들을 추가하고자 할 경우에 사용
t : tar파일의 내용을 확인하고자 할 때 반드시 사용
f : tar파일을 사용할 때에는 반드시 사용
p : tar파일을 생성할 때 ( 묶을 때 ) 당시의 파일 퍼미션을 그대로 하여 풀어줄 때 사용
v : 묶을 때나 풀어줄 때 파일들의 내용을 자세하게 보려고 할 때 사용
Z : compress로 압축파일을 사용할 때 압축이나 해제까지 한번에 할 때 사용
z : gzip과 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용
j : bzip2와 관련하여 압축이나 해제를 한꺼번에 하려고 할 때 사용
compress, uncompress
가장 오래된 압축유틸리티이며 특히 오래 전에 압축된 파일들은 거의 대부분 이 유틸리티를 활용하여 압축되어 있습니다 . 파일의 끝에 Z 가 붙어 있는 압축파일들은 compress로 압축된 것입니다 . 일반사용자들 보다 서버관리자가 필히 알아두어야 할 유틸리티입니다 .
그리고 compress로 압축하기 전의 용량과 압축 후에 생성된 용량을 확인해 보시기 바랍니다 . 압축된 후의 용량이 압축전의 용량의 절반쯤 됩니다 . 즉 압축률이 50%쯤이라고 볼 수 있죠 . 그리고 압축이 된 후에는 각각의 파일에 .Z라는 확장자가 붙게 됩니다 .
이는 compress로 압축되었음을 의미하는 것입니다 .
압축을 해제하는 방법은 uncompress라는 명령어를 사용하면 된다 . compress로 압축된 파일은 반드시 uncompress로 압축해제를 해야 합니다 . uncompress는 파일이 .Z로 끝나는 것만을 찾아서 압축해제를 해줍니다 .
gzip, gunzip
유닉스환경에서 사용되는 압축유틸리티중 가장 많이 사용하는 유틸리티입니다 . 압축을 하고나면 compress는 파일의 끝에 .Z를 붙여주지만 gzip은 .gz를 붙여줍니다 .
[ 사용하는 방법 ] - 압축할 때 : gzip 압축할파일명 - 압축풀 때 : gzip -d 압축된 파일명 또는 gunzip 압축된 파일명 gzip으로 압축을 할 때에는 거의 대부분 tar로 묶여진 파일을 다시 압축을 할
때 사용하게 됩니다 . tar로 묶여진 파일을 gzip으로 압축을 하게되었을 때의 용량을 비교해 보십시오 .
거의 10배의 압축효율이 있음을 알 수 있습니다 . 이 압축효율 때문에 compress보다는 gzip을 많이 사용하게 된 것입니다 . 또한 압축이 끝난후에는 파일의 끝에 .gz라는 것을 붙여주게되며 gzip으로 압축된 것임을 표시하게 됩니다 .
그리고 나서 압축을 해제 하고 싶다면 gzip –d 또는 gunzip 이라는 명령어를 사용하면 된다 .
tar와 gzip을 한번에
tar와 gzip을 동시에 할 수 있는 방법이 있으며 이는 tar의 옵션으로 다음과 같이 사용하실 수 있습니다 . 이런 작업을 하시려면 원래 사용하던 tar의 옵션에 z 라는 옵션을 추가해서 사용하시면 됩니다 .
즉 , 다음과 같이 사용하시면 됩니다 .
묶고 압축할 때
$ tar cvzf 압축파일 .tar.gz 압축대상파일 및 디렉토리
압축해제와 묶음 풀 때
$ tar xvzf 압축파일 .tar.gz
bzip2, bunzip2 bzip2라는 유틸리티는 gzip보다 압축효율이 좋아서 차세대
압축유틸리티로 좋은 평을 받고 있는 유틸리티입니다 . 사용하는 방법은 gzip과 거의 유사하며 압축된 후의 파일 끝에 .bz2라고 붙여줍니다 .
Tar와 bzip2를 한번에 tar와 bzip2를 동시에 할 수 있는 방법이 있으며 이는 tar의
옵션으로 다음과 같이 사용하실 수 있습니다 . 이런 작업을 하시려면 원래 사용하던 tar의 옵션에 j 라는 옵션을 추가해서 사용하시면 됩니다 .
즉 , 다음과 같이 사용하시면 됩니다 .
묶고 압축할 때 $ tar cvjf 압축파일 .tar.gz 압축대상파일 및 디렉토리 압축해제와 묶음 풀 때 $ tar xvjf 압축파일 .tar.gz
웹 상에 있는 파일 다운로드 받기 : wget
웹 상에 있는 파일을 wget을 이용해 다운받을 수 있다 .
wget [옵션 ] URL
리눅스 종료시 사용하는 명령어들 - sync : 명령어 변경후 disk 에 저장되지 못한 block 들을 write 시키도록 하는 명령어
- halt : 아무런 경고 없이 시스템을 즉시 종료 시킨다 .
- reboot : 시스템을 reboot 한다 . (shutdown -r 과 같음 )
- shutdown [ 옵션 ] 시간 [ 메시지 ]
-t n : n 초 후에 시스템 종료 신호 보냄
-r : reboot
shutdown now : 즉시 system down
- init : run level 변경으로 인한 시스템 종료방법 .
- init 0 : system down
- init 1 : single mode booting
- init 2 : multiuser mode booting (network = X)
- init 3 : multiuser mode booting (network = O), text mode
- init 4 : 사용자 정의 ( 사용안함 )
- init 5 : multiuser mode booting (network = O), X-window mode
- init 6 : reboot
※ /etc/inittab 에 명시되어 있음 .
Vi editorVi editor
vi editorvi editor
linux에서 가장 많이 사용되는 에디터인 vi editor에 대해 설명합니다 . 처음에는 불편한 부분이 많지만 조금만 익숙해 진다면 그 어떤 에디터보다 편하고 기능면에서도 파워풀하다는 것을 느낄 수 있을 것이다 .
먼저 vi 에서는 다음의 세가지 상태 ( 명령대기상태 , 글자입력상태 , 명령줄상태 ) 로 나눌 수가 있다 .
vi editorvi editor
① vi를 실행한 직후는 명령대기 상태이다 .
② 명령대기 상태에서 글자입력 상태로 바꿀려면 i, I, a, A, o, O 중 하나를 누른다 .
③ 명령대기 상태에서 명령줄 상태로 바꾸려면 :,/,? 중 하나를 누른다 .
④ 글자입력 상태에서 명령대기상태로 바꿀려면 ESC키를 누르면 된다 .
⑤ 명령줄 상태에서 명령대기상태로 바꿀려면 ESC키 , ENTER키 중 하나를 누른다 .
⑥ 명령대기 상태에서 현재 편집중인 파일을 저장 하려면 : 을 눌러 명령줄 상태가 되게한 후 w 를 입력하고 ENTER키를 누른다 .
vi editorvi editor
⑦ 명령대기 상태에서 현재 편집중인 파일을 저장하고 vi를 빠져 나갈려면 : 을 눌러 명령줄 상태가 되게한 후 wq!를 입력하고 ENTER키를 누른다 .
⑧ 명령대기 상태에서 현재 편집중인 파일을 저장하지 않고 vi를 빠져 나갈려면 : 을 눌러 명령줄 상태가 되게한 후 q!를 입력하고 ENTER키를 누른다 .
⑨ 명령대기 상태에서 글자 찾기를 할려면 ? Or / 를 눌러서 명령줄 상
태가 되게한 후 찾고자 하는 글을 입력하고 ENTER키를 누른다 .
vi editorvi editor
명령 대기상태 명령어
명령대기 상태에서는 커서의 이동 , 빈 줄의 추가 , 삭제하기 ,
바꾸기 ,
메모리 복사와 붙여 넣기 등을 할 수 있으며 , 이 들에 대한 명령 키와
설명은 다음 표에 열거되어 있다 .
커서의 이동
명령키 설 명
h 커서를 한칸 왼쪽으로 이동한다 .
j 커서를 한줄 아래로 이동한다 .
k 커서를 한줄 위로 이동한다 .
l 커서를 한칸 오른쪽으로 이동한다 .
^ 커서를 현재 줄의 처음으로 이동한다 .
$ 커서를 현재 줄의 끝으로 이동한다 .
숫자 G 커서를 지정한 숫자의 줄로 이동한다 .
vi editorvi editor
글자입력 상태로
명령키 설 명
i 커서가 있는 위치에서 글자입력 상태가 된다 .
a 커서의 오른쪽에서 글자입력 상태가 된다 .
I 현재 줄의 왼쪽 끝에서 글자입력 상태가 된다 .
A 현재 줄의 오른쪽 끝에서 글자입력 상태가 된다 .
vi editorvi editor
삭제하기
명령키 설 명
x 커서가 있는 한 글자를 삭제한다 .
dd 커서가 있는 한 줄을 삭제한다 .
dw 커서가 있는 한 단어를 삭제한다 .
D 현재 줄의 커서가 있는 곳 부터 줄의 끝까지 삭제한다 .
vi editorvi editor
바꾸기
명령키 설 명
r 커서가 있는 한 글자를 바꾼 후 다시 명령대기 상태가 된다 .
cw 커서가 있는 한 단어를 바꾼 후 다시 명령대기 상태가 된다 .
메모리 복사 (yank) 와 붙여 넣기 (put)
명령키 설 명
숫자 yy 커서가 있는 줄부터 지정된 숫자 만큼의 줄을 메모리에 복사한다 .
Y 커서가 있는 한 줄을 메모리에 복사한다 .
p 메모리에 복사되어 있는 내용을 커서가 있는 줄부터 붙여 넣는다 .
vi editorvi editor
명령줄 상태 명령어 명령대기 : 을 누르면 : 으로 시작하는 명령줄 상태가 되고 ,
/ 를 누르면 / 로 시작하는 명령줄 상태가 된다 . (탐색모드 위 -> 아래 )
? 를 누르면 ? 로 시작하는 명령줄 상태가 된다 . (탐색모드 아래 -> 위 )
vi editorvi editor
/로 시작하는 명령줄 상태
입력 설 명
/문자열 커서의 현재 위치부터 지정한 문자열을 찾아 준다 . ( 위에서 아래로 )
? 문자열 커서의 현재 위치부터 지정한 문자열을 찾아 준다 . ( 아래에서 위로 )
: 으로 시작하는 명령줄 상태
입력 설 명
:w 현재 편집 중인 내용을 저장한다 .
:w 파일명 현재 편집 중인 내용을 지정한 파일명으로 저장한다 .
:q vi 를 빠져 나간다 .
:q! 저장에 대한 경고 메세지가 나오지 않도록 하고 vi 를
빠져 나간다 .
:wq! 현재 편집 중인 내용을 저장하고 vi 를 빠져 나간다 .
:set numbers 행의 번호가 표시되게 한다 .
:set nonumbers 행의 번호가 표시되지 않게 한다 .
makemake
makemake
리눅스 시스템 (linux system)에서 우리는 종종 make utility를 사용하는데 , 이것은 어떤 프로그램 그룹을 유지하는 데 필요한 유틸리티이다 .
즉 , 이것의 목적은 프로그램 그룹 중에서 어느 부분이 새롭게 컴파일
되어야 하는지를 자동적으로 판단해서 GCC와 같은 커맨드를 이용하여 그들을 재 컴파일시켜 프로그램의 일관성을 유지토록 한다 .
make는 일련의 프로그램 개발에만 사용되지 않고 컴파일러처럼 일종의 명령어 방식으로 처리되는 모든 곳에서 사용가능 하다 . 다시 말하면 입력파일이 바뀌면 자동적으로 결과파일을 바꿔 주었으면 할 때 등에 사용된다 . 이를 위해 어떤 일관된 처리 루틴을 사용하는 데 이를 Makefile이라 한다 . Makefile는 make가 이해할 수 있도록 일종의 쉘 스크립터 언어처럼 작성되어 진다 .
makemake
보통 리눅스 시스템에서 Makefile은 기본적으로 아래와 같이 목표 (target), 의존 관계 (dependency), 명령 (command)
의 세가지로 이루어진 규칙을 사용한다 . make가 지능적으로 파일을 갱신하는 것도 모두 이 간단한 규칙 (rule)에 의해서 이다 .
target : dependency …….
command ……. .
makemake
목표 (target)부분은 명령 (command)이 수행되어져서 나온 결과 파일을 지정한다 . 당연히 목적파일 (object file)이나 실행파일이 된다 . 명령 (command)부분에 정의된 명령들은 의존관계 부분에 정의된 파일의 내용이 바뀌었거나 목표부분에 해당하는 파일이 없을 때 이것에 정의된 것들이 차례로 실행된다 . 명령부분은 반드시 TAB을 사용하여 띄우도록 하고 목표부분에는 결과 파일만이 올 수 있는 것이 아니고 보통 make clean, make all등과 같이 레이블 (label)이 올 수도 있다 .
makemake
예제
프로그램 소스 : main.c, read.c write.c, io.h
먼저 make를 사용하지 않고 명령어를 주어 각각 컴파일해서 test라는 실행파일을 생성시킨다 .
# gcc –c main.c
# gcc –c read.c
# gcc –c write.c
# gcc –o test main.o read.o write.o
# ./test
makemake
다음으로 Makefile을 사용하여 컴파일하기
Makefile 내용
test : main.o read.o write.o
gcc –o test main.o read.o write.o
main.o : io.h main.c
gcc –o main.c
read.o : io.h read.c
gcc –o read.c
write.o : io.h write.c
gcc –o write.c
makemake
각 파일들의 의존관계
main.o read.o write.o
main.c read.c write.c
io.h
test
makemake
매크로 (Macro)기능과 레이블 (Label)기능을 사용하여 Makefile작성을 원활히 할 수 있다 . 먼저 매크로의 사용에 대해서 살펴보면 ,
매크로는 특정 내용을 치환하여 프로그램을 단순화시키고자 할 때 사용되는 것으로 반드시 $(..)안에 넣어서 사용한다 . 위에서 사용된 test 예제에서 매크로를 사용하여 작성한 Makefile이 아래에 있다 .
여기서 사용한 매크로는 OBJECTS라는 것으로 , main.o, read.o,
write.o 부분을 OBJECTS로 치환하여 사용하였다 .
이 매크로 중에서는 CC, CFLAGS, LEX처름 미리 지정된 매크로(Pre-defined Macro)도 있다 . 참고로 make –p를 실행해 보면 make에서 미리 지정되어 있는 모든 값들 ( 매크로 , 환경 변수 등 ) 을 미리 볼 수 있으며 , 다음은 UNIX계열의 make에서 미리 정해져 많이 사용되고 있는 매크로들 이다 .
makemake
OBJECTS = main.o read.o write.o
test : $(OBJECTS) # OBJECTS라는 Macro를 사용하여 Makefile를 작성한다 . gcc –c $@ $(OBJECTS)
main.o : io.h main.c gcc –c main.c
read.o : io.h read.c gcc –c read.c
write.o : io.h write.c gcc –c write.c
makemake
Pre-defined Macro
ASFLAGS = : as 명령어의 옵션 세팅
AS = as
CFLAGS = : gcc의 명령어의 옵션 세팅
CC = cc (=gcc)
CPPFLAGS = : g++의 옵션 세팅
CXX = g++
LDLFLAGS = : ld의 옵션 세팅
LD = ld
LFLAGS = : lex의 옵션 세팅
LEX = lex
makemake
레이블 (Label) 사용에 대해 살펴보면 , 목표 부분에 해당하는 부분이 레이블로 처리되어 간략화될 수 있다 . 다음 슬라이드는 clean이라는 레이블을 사용하여 컴파일시에 생성된 오브젝트 파일들을 제거하는 예제이다 .
레이블로 사용될 때는 당연히 의존 관계 부분은 없어도 된다 .
그리고 레이블 clean을 사용하여 실행시키려면 아래와 같이 수행한다 .
# make clean
rm main.o read.o write.o
/* make clean으로 object file이 삭제된다 . */
makemake
OBJECTS = main.o read.o write.o
test : $(OBJECTS) # OBJECTS라는 Macro를 사용하여 Makefile를
작성한다 . gcc –c $@ $(OBJECTS)
main.o : io.h main.c gcc –c main.c
read.o : io.h read.c gcc –c read.c
write.o : io.h write.c gcc –c write.c
clean :
rm $(OBJECTS)
makemake
매크로 (Macro)와 레이블 (Label)을 사용한 예제 test.c 소스파일을 Makefile을 작성하여 실행파일 test를 생성하는 예제
[ test.c ]#include <stdio.h>int main(int argc, char *argv){ printf(“\nHello\n”); return 1;}
[ Makefile ] INC = -I/usr/include # 헤더파일의 위치를 지정한다 TARGET = test # 생성될 타겟 파일을 지정 SRCS = test.c # 소스파일을 지정 CC = gcc # 컴파일러를 지정한다
all : $(CC)$(INC) –o $(TARGET) $(SRCS)
makemake
Suffix Rule/Internal Macro 확장자 규칙이란 간단히 말해서 파일의 확장자를 보고 그에 따라 적절한 연산 동작을 수행시키는 규칙
.SUFFIXES
Makefile에서 주의깊게 처리할 파일들의 확장자를 자동으로 처리
.SUFFIXES = .c .o
.c와 .o 확장자를 가진 파일들을 확장자 규칙에 의해 처리될 수 있도록 해주며 , 미리 정의된 .c(C Source File)를 컴파일해서 .o(Object File)을 만들어내도록 자동적으로 동작한다 .
makemake
Internal Macro 임의로 사용할 수 없으며 주로 연산 , 처리에 자주 사용된다
$* /* 확장자가 없는 현재의 목표파일 (target)*/
$@ /* 현재의 목표파일 (target)*/
$< /* 현재의 목표파일 (target)보다 더 최근에 갱신되어진 파일이름 */
$? /* 현재의 목표파일 (target)보다 더 최근에 갱신되어진 파일이름 */
$< 와 $?의 기능은 거의 비슷하다 . 각 내부 매크로에 대한 예 .
main.o : main.c io.h
gcc -c $*.c
makemake
$*는 확장자가 없는 현재의 목표파일임으로 $*는 결국 main에 해당한다 .
test : $(OBJS)
gcc -c $@ $*.c
# $@는 현재의 목표파일이다 . 따라서 test에 해당한다 .
.c.o :
gcc -c $<
오브젝터 파일인 .o보다 소스파일인 .c가 더 최근에 갱신되었다면 .c파일은 자동적으로 컴파일 된다 . 즉 , main.o 가 생성한 후에 main.c를 갱신하게 되면 main.c는 $<에 의해 자동적으로 새롭게 컴파일된다 .
RPM RPM 사용방법사용방법
RPM 명령어 사용법 - Redhat Package Manager 의 약어 . 설치는 쉽지만 , 설치되는 디렉토리 변경이 어려운 단점이
있다 .
- rpm [ 옵션 ] 파일명 -i : 새로설치 -U : 이전버전이 있으면 업그레이드 설치 , 없으면 새로설치
-F : 현재 설치하려는 RPM 의 이전버전이 있을경우만 설치 -v : 설치중 메시지를 보여준다 .
-e : 제거시 사용 -qa : 현재 설치된 모든 패키지 목록을 찾는데 사용한다 .
-qi : 현재 설치된 패키지의 간략한 정보를 출력 .
-ql : 설치된 패키지의 내용을 보여준다 . 경로확인시 사용 .
--force : 패키지의 충돌등을 무시하고 강제설치 .
--nodeps : 의존성 문제를 일으켜 설치가 안될경우에 쓰는 옵션
ex) rpm -Uvh XFree86-Mach64-3.3.6-20-kr.i386.rpm
rpm -e httpd --nodeps : 의존성이 있더라도 무시하고 제거 rpm -qa : 모든 패키지를 보여준다 . ( 특정 패키지 확인시 grep 과 같이 씀 )
rpm -ql sendmail : sendmail 이 설치된 경로를 보여준다 .
top related