makefile은
복잡한 컴파일 절차를 기술해 놓은 것이라 보면 됨.
make로 makefile을 실행하면 내가 컴파일 옵션을 일일이 작성해서 컴파일을 실행하지 않고도 손쉽게 컴파일을 처리할 수 있다는 것..
리눅스에서 프로그램을 설치하기 위한 단계
make : Makefile을 읽어 소스코드에서 실행 가능한 프로그램과 라이브러리를 자동 빌드.
: 타겟과 의존성 관련 작업 후 최종 실행파일 생성
make install : 컴파일된 실행파일을 지정한 속성으로 지정된 디렉터리에 설치
[root@localhost ARICS_CTI]# view makefile.linux
@rm -f *.o
@rm -f *.dbg_o
@rm -f core.*
install :
@echo "Install AriCS ..."
@mkdir -p $(EXE_DIR)
@cp -R bin/* $(EXE_DIR)/
@cp -R config/* $(EXE_DIR)/
# @cp $(EXENAME)_$(VERSION) $(EXE_DIR)$(EXENAME)_$(VERSION)
@ln -sf $(EXE_DIR)$(EXENAME)_$(VERSION) $(EXE_DIR)$(EXENAME)
uninstall :
@echo "Uninstall AriCS ..."
@rm -Rf $(EXE_DIR)
test :
@echo "Linux Bit is" $(BIT)
@echo "Compiler is" $(CC)
mkdir -p 여러 덱스의 하위 디렉토리를 생성시에 사용한다.
cp -R 하위 디렉토리까지 전부 복사
ln -s '원본 파일명' '심볼릭 링크 파일명' "심볼릭 링크 파일 생성 3명령어,
-f : 대상파일이 존재할 경우에 대상파일을 지우고 링크파일을 생성
BUILD 디렉토리는 패키징하려는 프로그램의 소스 코드가 빌드되는 곳입니다.
BUILDROOT 디렉토리는 BUILD 디렉토리 내의 소프트웨어 컴파일 결과 파일이 복사되는 곳으로, 패키지 이름이 있는 하위 디렉토리 내의 대상 시스템의 구조를 반영한다.
이 경우 /usr/bin에 설치될 "feh" 이진 파일은 BUILDROOT/feh-3.0-1.fc29.x86_64/usr/bin으로 보고됩니다.
RPMS 디렉토리는 rpm 패키지가 생성되는 곳입니다. 각 rpm은 하위 디렉토리에 배치됩니다.
아키텍처의 이름을 따서 명명하거나, 아키텍처별이 아닌 경우 아크가 없습니다.
SOURCES 디렉터리는 우리가 패키징하려는 소프트웨어의 압축된 소스 코드를 호스팅하며, 종종 zip 파일의 tarball 형태로 운영된다.
SPECES 디렉토리는 패키지를 빌드하기 위한 지침과 함께 .spec 파일을 저장하는 곳입니다. 잠시 후에 이 파일의 구조를 분석하겠습니다.
SRPMS 디렉토리는 RPMS와 동일하지만 소스 RPM의 경우입니다. 이 특수 패키지에는 응용 프로그램의 원본 소스 코드, 최종 패치 및 패키지를 만드는 데 사용되는 사양 파일이 포함됩니다.
http://egloos.zum.com/youmin3/v/1845224
spec 파일이란 RPM 패키징을 위해 사용되는 명세 파일이다.
spec 파일은, RPM을 빌드할 때 어떤 순서와 절차로 RPM을 빌드할 것인지에 대해서 명시해놓은 파일이다.
spec 파일과 make 기술 파일이 틀린 점은,
make 기술 파일은 프로젝트의 빌드 방법만 기술해놓은 파일인 반면에,
spec 파일은 만들어질 RPM의 정보도 함께 들어 있다는 것이다.
(1) 매크로 정의부분.
패키지 이름과 버전과 같이 spec 파일 내부에서 자주 사용하는 문자열에 대해서 매크로로 정의하는 부분이다.
(2) 헤더 부분.
RPM 패키지에 대한 설명이 각 필드별로 나누어져 있다.
주로 패키지명과 버전, 패키지 설명, 만든 사람, 라이선스 등 정보를 적는 필드가 있다.
그리고 이러한 헤더의 각 필드 정보는 RPM을 설치할 때 RPM DB에 들어가게 된다.
(3) 명령 실행 부분.
RPM을 어떻게 빌드할 것인지에 대해서 정의해놓은 부분이다.
RPM을 빌드할 때는 압축된 소스 파일을 가지고 빌드하게 되어 있는데, 압축된 소스를 어떻게 풀고 어떤 명령으로 컴파일하고 어떤 명령으로 인스톨하게 할 것인지에 대해서 정의해놓은 부분이라고 보면 된다.
(4) 체인지 로그 부분.
해당 패키지가 어떤 식으로 변화되었는지에 대해서 적어 넣는 부분이다.