2003년 4월 9일 수요일

Advanced Programming In the Unix Environment W. Richard Steven (APUE) 실행 예제 파일 다운 받아 컴파일 실행 시키기

http://www.kohala.com/start/apue.html

wget http://www.kohala.com/start/apue.tar.Z

실행 예제 파일 다운 받아 컴파일하는 방법
---------------------------------------------------
압축을 풀고, README 파일을 반드시 읽어본다.

00. APUE에 언급되어 있는 FTP 주소를 통해 stevens.advprog.tar.Z를 적절한 자신의 디렉토리(예 : /home/park9n)에 다운 받는다.
01. tar xvfZ stevens.advprog.tar.Z 하면 apue라는 서브디렉토리 아래 압축이 풀린다.
02. apue 디렉토리에 들어가 (리눅스의 경우.) Make.def.svr4를 Make.defines로 카피하고 다음 부분을 편집한다.
    ▒ ...
    ▒ LDFLAGS = /home/ilashman/lib/libmisc.a (예제. libmisc.a가 만들어질 적절한 디렉토리를 선택한다.)
    ▒ ...
    ▒ LIB = /home/ilashman/lib/libmisc.a (예제. LDFLAGS와 동일하게.)

mkdir /home/ilashman/lib/    라이브러리가 들어갈 디렉토리를 미리 만들어 두어야한다.

    ▒ ...
03. (리눅스의 경우.) lib.svr4 디렉토리에 들어가 Makefile을 Makefile.bak로 카피하고 Makefile을 다음과 같이 편집한다.
    ① 'systype.sh'를 './systype.sh'로 수정한다.
    (수정하지 않고 make를 수행하면 현재 디렉토리가 PATH에 등록되어 있지 않은 경우 Error가 발생한다.)
    ② COMM_OBJ = 로 시작되는 오브젝트 화일들의 나열 중에서 strerror.o를 지워준다.
    (strerror.c에 sys_errlist라는 변수가 /usr/include/stdio.h와 중복되게끔 정의되어 있다. 생각해 보니 삭제가 아니라 주석처리가 옳겠다. -_-;;)
04. make 하면 02에서 편집할 때 지정한 디렉토리에 libmisc.a가 만들어 진다.
부록. 테스트하기.
00. apue/file 디렉토리에 들어간다. 이미 APUE에서 보았던 ls1.c와 ourhdr.h가 보일 것이다.
01. cc -c ls1.c 하면 (시스템의 문제가 아닌 이상.) ls1.o가 만들어질 것이다.
02. cc -o ls1 ls1.o [libmisc.a의 위치(예 : ~/lib/libmisc.a)] 하면 ls1이라는 실행화일이 만들어질 것이다.
03. ./ls1 해서 ls1 프로그램을 실행시켜 본다. 아자.

막상 적으면서 생각해 보니 수정해야 할 부분이 많은 것 같습니다. (특히 strerror.o를 지워줬던 문제.)

apue/file 디렉토리의 Makefile을 수정한다. 다음과 같이 만든다.
-------------------------------------------
include ../Make.defines

PROGS = access cdpwd changemod conf devrdev \
        fileflags filetype ftw4 \
        hello hole longpath ls1 mycd \
        seek testerror uidgid umask unlink zap

all:    ${PROGS}

savedid: savedid.o
        $(LINK.c) -o savedid savedid.o $(LDLIBS) $(S5LIB)

clean:
    rm -f ${PROGS} ${TEMPFILES} file.hole

댓글 없음:

댓글 쓰기