blueecho's collection

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
        
분류 전체보기 (267)
NeWs (21)
배움생활 (107)
취미생활 (118)
끄적끄적 (5)
인생설계 (12)
Wish list (4)
연구실생활 리눅스 자전거 사진 지름신 영화감상 Fedora 솔카당 연구실 생활 일본소설
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
블로그 이동하였습니다.

 

배움생활에 해당하는 글 107개
2006.01.03   make (3) 
2005.12.28   make (2) 
2005.12.27   make (1) 

  make (3) | 2006. 1. 3. 20:39 | 배움생활/리눅스   
1. 소스 파일(*.c등)을 컴파일 하면 동일한 이름을 가지는 오프젝트 파일을 만든다.
2. 컴파일러의 종류에 의해 오브젝트 파일의 경우는 각 모듈(함수)의 이름을 그대로 사용하는 경우와 '_'을 추가하는 경우가 생긴다. ( ex> intake -> _intake 등...)
3. 라이브러리 >> 파일 >> 모듈
4. 라이브러리 내에 파일이 여러개가 묶여 있을경우 원하는 부분만 사용할 경우는 사용하는 "라이브러리 이름 (파일이름)" 매크로의 경우 "{LIB}(파일이름)"의 형태로 된다. 예를 들면 'ar r libtemp one.o two.o'로 만들어진 libtemp라는 라이브러리에서 two.o만 사용할 경우는 "libtemp(two.o)"라고 써서 사용한다. (시스템V의 경우는 하나의 이름만 사용할 수 있다.)
5. 일부 make 버젼에서는 파일에 관계없이 특정 모듈(함수)를 참조할 수도 있다. ex> libtemp((_calc))
6. C소스 파일이 변경되었을때 라이브러리를 갱신하려면 다음과 같이 한다. 이 예제는 소스가 변경되었을때 라이브러리를 갱신하는 예제이다.
.c.a:
$(CC) -c $(CFLAGS) $<
ar rv $@ $*.o
rm -rf $*.o
7. 라이브러리 관리를 위해서 간단한 기술 파일 항목을 이용하여 라이브러리를 관리할 수 있다. 갱신이 될때 알려준다.
libtemp: libtemp(one.o) libtemp(two.o)
echo "$@ is now up-to-date"
8. "libtemp(one.o) : /usr/include/stdio.h" 이 경우는 libtemp는 /usr/include/stdio.h가 one.o가 라이브러리에 통합된 마지막 시점 이후에 변경되면 갱신된다.
9. 이중콜론의 경우는 기본적으로 makefile내에서 동일한 타겟에 대해서 두번 정의하는 것을 허용하지 않는 다는 것을 피하기 위해서, 동일한 타겟에 대해서 다시 정의할 수 있다. make는 두 항목을 확인후 필요항목에 대한 명령을 실행하게 된다.
10. NULL확장자는 일부 make에서 하나의 확장자만을 사용하여 정의 가능하다. 초반 기술 파일에서 ".c: ~~~" 처럼 만든다면 기본 규칙( "$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@" )로 실행하게 되는 것을 말한다. 만약 "make program"이라 했다면 "cc -O program.c -o program"으로 실행이 된다.
11. -p옵션의 경우 모든 옵션 및 매크로, 확장자 규칙, 타겟을 출력하는 옵션이다. 사용자가 가지고 있는 기술 파일의 영향을 받지 않은 것들을 보려면 "-f"옵션을 더 붙이도록 한다. ( make -fp, GNU make의 경우는 make -p -f)

'배움생활 > 리눅스' 카테고리의 다른 글

make (5)  (0) 2006.01.23
make (4)  (0) 2006.01.04
make (2)  (0) 2005.12.28
make (1)  (0) 2005.12.27
wxDev-CPP 설치 가이드  (0) 2005.12.20


  make (2) | 2005. 12. 28. 17:21 | 배움생활/리눅스   
1. .SUFFIXES는 make가 중요하게 여길 확장자를 나타낸다.
2. $< 확장자 규칙에서만 사용될수 있다는 점을 제외하면 $?과 같다.
3. 모든 프로그램에 -g(디버그)와 같은 옵션을 사용할 경우는 '$ make program CFLAGS=-g' 또는 makefile에서 'CFLAGS = -g' 그러면 이 옵션은 모든 컴파일러에 적용된다.
4. CFLSGS에서 여러 옵션을 줄때는 " "로 묶어주면 된다.
5. CFLAGS의 예외는 -l옵션이다. -l옵션은 파일이름이 바로 뒤에 따라야 하기 때문에 전달할수가 없다. 별도의 매크로를 만들어서 전달하도록 한다.
6. CFLAGS를 사용할때는 make가 파일이름과 변경시간에서만 정보를 얻는다는 점을 주의해야 한다.
7. 'cp $< $*.tmp'에서 main.c가 적용될 경우는 'cp main.c main.tmp'로 바뀌게 된다. (기본적으로 $*은 최근 변경된 파일을 말하지만 확장자 규칙에서만은 필요항목의 파일이름만을 표시한다.)
8. SCCS의 파일(s.*.c)을 다룰때는 확장자 규칙에서 '.c~.o:'로 표현해 준다. $s의 경우 SCCS파일의 경우는 s.*로 변경되어야 하나 일반 파일이름으로 대체된다.

'배움생활 > 리눅스' 카테고리의 다른 글

make (4)  (0) 2006.01.04
make (3)  (0) 2006.01.03
make (1)  (0) 2005.12.27
wxDev-CPP 설치 가이드  (0) 2005.12.20
리눅스 에서 iso 이미지 화일 마운트 하기  (0) 2005.11.21


  make (1) | 2005. 12. 27. 17:01 | 배움생활/리눅스   
1. make에서의 명령은 'tab문자'를 인식하여 실행을 한다. 즉, 탭문자가 젤 먼저 나와야 명령으로 인식한다.
2. make에서의 매크로의 정의는 '='을 사용하며, 정의된 매크로를 사용할 때에는 $(),${},$등을 사용한다.
3. 기술파일(makefile)보다 자신의 정의한 매크로를 사용하기 위해서는 -e옵션을 사용하도록 한다.
4. 매크로에서는 문자열 치환을 할 수 있다. 예를 들면 "SRCS = defs.c redraw.c calc.c"라고 정의하고 사용시 "ls ${SRCS:.c=.o}"라고 사용하면 SRCS라고 정의되었던 부분의 .c를 .o로 치환해서 결과를 내보낸다. 결과는 "defs.o redraw.o calc.o"이다. 단 매크로의 마지막 부분이나 공백문자 바로앞까지만 적용된다.
5. $@은 현재 타겟의 이름이다
6. $?은 현재 타겟보다 최신인 필요항목들을 말한다. 현재 타겟의 종속적인 것들(타겟을 위해 컴파일이나 링크되어야 되는 것들)중 최신의 것을 말한다.(갱신이 필요없는 것은 사용하지 않는다)

'배움생활 > 리눅스' 카테고리의 다른 글

make (3)  (0) 2006.01.03
make (2)  (0) 2005.12.28
wxDev-CPP 설치 가이드  (0) 2005.12.20
리눅스 에서 iso 이미지 화일 마운트 하기  (0) 2005.11.21
페도라에 NTFS모듈 설치하기  (0) 2005.10.19


#1 #··· #30 #31 #32 #33 #34 #35 #36
 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post