000 | 00826camcc2200265 c 4500 | |
001 | 000045619661 | |
005 | 20101130185239 | |
007 | ta | |
008 | 101130s2010 ulka 001c kor | |
020 | ▼a 9788979147599 ▼g 93560 | |
035 | ▼a (KERIS)BIB000012155318 | |
040 | ▼d 211052 ▼d 211052 ▼d 211009 | |
082 | 0 4 | ▼a 005.43 ▼2 22 |
085 | ▼a 005.43 ▼2 DDCK | |
090 | ▼a 005.43 ▼b 2010z3 | |
100 | 1 | ▼a 백창우 |
245 | 1 0 | ▼a 유닉스 리눅스 프로그래밍 필수 유틸리티 : ▼b vim, make, gcc, gdb, svn, binutils / ▼d 백창우 지음 |
250 | ▼a 개정판 | |
260 | ▼a 서울 : ▼b 한빛미디어, ▼c 2010 | |
300 | ▼a 795 p. : ▼b 삽화 ; ▼c 26 cm | |
500 | ▼a 개발 생산성을 높이는 유틸리티 사용법 | |
500 | ▼a 색인수록 | |
500 | ▼a 부록: 프로그래밍 유형별 가용 유틸리티, vim 명령 정리, gcc 옵션 정리 등 | |
945 | ▼a KLPA |
Holdings Information
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Main Library/Monographs(3F)/ | Call Number 005.43 2010z3 | Accession No. 111602230 | Availability Available | Due Date | Make a Reservation | Service |
No. 2 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.43 2010z3 | Accession No. 121210561 | Availability Available | Due Date | Make a Reservation | Service |
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Main Library/Monographs(3F)/ | Call Number 005.43 2010z3 | Accession No. 111602230 | Availability Available | Due Date | Make a Reservation | Service |
No. | Location | Call Number | Accession No. | Availability | Due Date | Make a Reservation | Service |
---|---|---|---|---|---|---|---|
No. 1 | Location Science & Engineering Library/Sci-Info(Stacks1)/ | Call Number 005.43 2010z3 | Accession No. 121210561 | Availability Available | Due Date | Make a Reservation | Service |
Contents information
Book Introduction
프로그래밍을 쉽게, 프로그램을 견고하게 만들려면 무엇을 써야 하는지 알려주는 책. 유닉스/리눅스 프로그래머들이 필수로 알아야 하는 vim, gcc, gas, binutils, gdb, ddd, make, svn, autotools, autoconf, automake 등 다양한 도구를 활용하는 방법을 실용적인 예제로 설명한다.
뛰어난 프로그래머는 좋은 유틸리티를 적재적소에 사용할 줄 안다
프로그래머는 누구나 도구를 쓰며, 훌륭한 프로그래머는 적재적소에 도구를 사용할 줄 안다. 유닉스/리눅스 프로그래밍을 위한 도구는 많지만, 이에 대한 체계적인 안내서가 없었다. 이 책은 프로그래밍을 쉽게, 프로그램을 견고하게 만들려면 무엇을 써야 하는지 알려준다. 이 책에서는 유닉스/리눅스 프로그래머들이 필수로 알아야 하는 vim, gcc, gas, binutils, gdb, ddd, make, svn, autotools, autoconf, automake 등 다양한 도구를 활용하는 방법을 실용적인 예제로 설명한다.
【주요내용】
● vim 기초 사용법과 실제로 많이 사용하는 고급 사용법
● ctags, cscope를 사용한 소스 분석 기법
● gcc 컴파일 과정과 최적화된 컴파일 방법
● gdb, ddd를 이용한 기초 디버깅 기법과 고급 디버깅 기법
● gas를 이용한 GNU 어셈블러 익히기
● binutils를 이용한 바이너리 조작법
● make의 기초 활용법과 고급 활용법
● autoconf, automake를 사용한 여러 시스템에서 이식 가능한 프로젝트 작성법
● 원활한 팀 프로젝트 운영을 위한 CVS, Subversion 사용법
● rpm, deb를 이용한 패키지 관리법
Information Provided By: :

Author Introduction
Table of Contents
목차 저자서문 = 3 1부 튜토리얼 1장 튜토리얼 01. 간단한 소스 프로그램 작성 = 19 02. gcc로 컴파일러로 실행 파일 생성 = 21 03. make를 사용해 프로젝트 관리 = 25 04. 문제 발생, 벌레를 잡아라 = 29 05. svn을 사용한 프로젝트 버전 관리 = 36 06. doxygen을 이용한 문서화 = 40 07. autotools를 사용한 이식성 높은 빌드 = 44 08. RPM 패키징 = 51 2부 에디팅 2장 vi와 vim 에디터 01. vi 개괄 = 59 vi의 역사 = 59 vi의 장점 = 59 서른 살이 다 되어가는 에디터 그 매력 = 60 02. 기본적인 vim 사용법 트레이닝 = 61 vim의 모드 이해 = 62 파일 열기, 저장, 종료 = 63 입력 = 66 이동 = 67 편집 = 70 되돌리기와 되살리기 = 74 문자열 탐색 = 74 문자열 치환 = 75 03. 진정 vim을 강력하게 하는 고급 테크닉 = 78 정규 표현식을 사용한 문자열 탐색과 치환 = 78 여러 파일을 편집하는 방법 = 88 반복되는 문자열을 저장해서 쓰기 = 92 매크로의 사용 = 94 다중 창 사용하기 = 95 마킹으로 이동하기 = 99 셸 명령 사용 = 102 04. vim의 조력자들 ctags, cscope, 기타 플러그인 = 104 소스 태그를 찾기 위한 만능 해결사 ctags = 104 ctags 설정 및 기본 사용법 = 105 vim 내장 스크립트 작성 = 110 cscope를 사용해 나머지 2%를 채워라 = 114 완벽한 조합 vim+screen+ctags+cscope = 119 모르는 함수를 알고 싶을 때 man page의 활용 = 122 플러그인을 사용해 vim의 기능 확장 = 124 05. 개발자를 위한 vim의 유용한 팁 = 130 파일 탐색 기능 활용 = 130 빠른 괄호 이동 및 빠른 탐색 = 130 폴딩 기능 이용 = 131 함수의 원형과 지역변수의 선언 부분으로 바로 이동 = 132 여러 행 탭 끼워넣기 = 133 탭 사이즈 조정 = 133 흐트러진 소스 정렬 = 134 행 번호 보이기 = 135 ^M 문자 제거 = 136 파일에서 달라진 부분 비교하기 = 137 헤더 파일 바로 읽어 오기 = 138 자동 완성 기능 사용하기 = 139 정규 표현식에서의 매칭 문자 사용 = 139 06. 개발자들의 vim 설정 = 139 3장 기타 편집기 소개 01. emacs = 145 02. 이클립스 = 147 이클립스 소개 = 147 이클립스의 특징 = 148 이클립스의 장단점 = 148 03. gedit = 149 04. KDevelop = 150 05. anjuta = 151 3부 컴파일과 링킹 4장 gcc compiler 01. 컴파일의 의미 = 155 인스트럭션과 어셈블리 = 155 0과 1밖에 모르는 CPU = 159 02. 알아 두면 정말 유용한 C 소스 컴파일 과정 = 163 C 소스의 전체 컴파일 과정 = 163 cc1-E에 의한 전처리 과정 = 171 cc1에 의한 어셈블리 소스 파일로 컴파일 = 177 as에 의한 기계어 코드 생성 = 202 collect2에 의한 링킹 과정 = 208 03. gcc를 사용해 원하는 컴파일하기 = 218 gcc 옵션 분류 = 218 gcc 옵션 적용 규칙 = 226 가장 단순한 컴파일 명력 = 229 반드시 알아야 할 gcc 필수 옵션 및 중요 옵션 = 230 04. gcc를 이용한 최적화 컴파일 = 260 머신 종속적인 옵션을 이용한 최적화 = 260 프로파일 결과를 이용한 최적화 = 265 함수 프레임 포인터 제거 = 276 프리패치(prefetch)를 이용한 최적화 = 279 레지스터 활용을 통한 최적화 = 281 gcc 컴파일 속도 최적화 = 281 05. 기타 알아 두면 좋을 만한 것 = 282 환경 변수를 사용한 gcc 설정 = 282 specs 파일을 이용한 gcc 설정 = 283 5장 Id linker 01. 링킹의 기본 이해 = 289 링킹 과정 절차 = 289 02. ELF 바이너리 포맷 구조 = 295 ELF 바이너리 포맷이란? = 295 ELF 바이너리 포맷의 구조 = 296 ELF 바이너리를 해석하는 두 가지 관점 = 298 ELF 헤더 = 299 프로그램 헤더 테이블 = 301 섹션 헤더 테이블 = 304 각종 섹션 종류 = 307 03. Id를 사용한 링킹 = 315 Id를 사용한 기본적인 링킹 = 315 알아 두면 유용한 Id 옵션 = 325 04. 링커 스크립트 = 335 링커 스크립트의 이해 = 335 링커 스크립 기본 문법 = 342 05. Id를 사용한 고급 링킹 테크닉 = 357 OS 개발을 위한 링커 스크립트 = 357 XIP 기법을 사용한 메모리 절약 = 358 오버레이(overlay) = 361 필요한 데이터 바이너리 이미지에 포함 = 363 06. 라리브러리를 만들기 = 365 정적 라이브러리 만들기 = 365 공유 라이브러리 만들기 = 369 6장 gas assembler 01. gas를 사용해 어셈블하기 = 377 gas의 이해 = 378 as를 사용한 어셈블 시습 = 381 02. 어셈블리 파일의 작성 = 388 assembly기본 사용법 = 389 C 소스에서 컴파일된 에셈블리 파일 분석 = 391 전처리기 사용 = 396 gas assembler 필수 지시자 = 397 03. 인라인 어셈블리의 사용 = 403 7장 삶을 윤택하게 하는 바이너리 유틸리티 01. 바이너리 유틸리티 사용하기 = 415 addr2line 명령으로 특정 주소가 어떤 파일의 어떤 라인인지 알아보기 = 416 c++filt 명령으로 맹글링되기 전의 C++ 또는 JAVA 심볼명 보기 = 416 gprof로 프로파일 정보 알아보기 = 418 nm으로 ELF 포맷의 심볼 테이블 보기 = 420 objcopy 사용하기 = 422 objdump 사용하기 = 423 readelf 명령으로 ELF 파일의 각종 정보 보기 = 426 size 명령으로 오브젝트 파일의 사이즈 보기 = 427 strings 명령으로 바이너리 내부 문자열 보기 = 427 오브젝트 파일의 사이즈 줄이기 = 427 gcov로 커버리지 정보 알아보기 = 428 4부 디버깅 8장 gdb 디버거 01. 단순하지만 강력한 디버거 gdb = 435 gdb에 대한 소개 = 435 gdb로 간단한 디버깅 따라하기 = 436 gdb의 시작과 종료 = 438 소스 보기 = 440 브레이크 포인트 = 441 프로그램 수행 = 446 와치 포인트 설정 = 449 변수와 레지스트 값 검사 = 451 스택의 상태 검사 = 462 메모리 상태 검사 = 473 기타 유용한 명령어 = 475 02. gdb를 이용한 디버깅 테크닉 = 479 코어 파일을 이용한 디버깅 = 479 실행 중인 프로세스 디버깅 = 482 멀티프로세스 프로그램 디버깅 = 484 멀티스레드 프로그램 디버깅 = 488 라이브러리 디버깅 = 493 9장 GUI 디버거 DDD의 사용 01. DDD란 무엇인가? = 501 02. DDD 사용한 디버깅 = 501 ddd 시작과 종료 = 502 ddd의 각 부분 설명 = 502 ddd에서 브레이크포인트 설정 = 503 ddd에서 브레이크포인트 해제 = 506 프로그램에 걸려 있는 브레이크포인트 확인 = 507 프로그램 수행 = 507 와치 포인터 설정 = 509 변수 값 검사 = 510 레지스터, 메모리, 스레드, 스택 등의 상태 확인 = 513 프로세스 attach와 detach = 513 기타 알아 두면 좋을 사항 = 514 10장 기타 디버깅 툴 01. trace 유틸리티를 사용한 프로그램 문제점 분석 = 517 strace를 사용해 프로세스의 문제 진단 = 517 ltrace를 사용해 프로세스가 호출하는 공유 라이브러리 함수를 알아내기 = 523 02. 문제 진단 유틸리티 = 524 splint로 소스 코드의 문제점 진단 = 524 메모리 디버거의 사용 = 526 5부 프로젝트 빌드 11장 make 01. make의 이해 = 533 make의 기본 동작 = 534 기술 파일의 작성 = 538 02. 매크로의 사용 = 542 매크로 작성 기본 규칙 = 542 매크로 사용 시 주의 사항 = 545 내부적으로 정의되어 있는 매크로의 사용 = 547 03. 확장자 규칙의 사용 = 551 04. 더미 타겟의 사용 = 558 05. 명령 사용 규칙 = 558 06. 재귀적 make의 사용 = 562 서브 Mdkefile에 대한 매크로 전달 = 567 07. 조건부 수행 = 569 08. 함수의 사용 = 570 셀 명령 함수 = 571 문자열 처리 함수 = 572 파일 이름 관련 함수 = 577 기타 유용한 함수 = 579 함수 사용할 때 주의 사항 = 582 09. 특수 타겟 = 584 10. make 최종정리 = 585 12장 autoconf 01. autoconf란 무엇인가 = 592 02. 따라 해 보기 = 593 03. autoconf의 구조와 원리 = 597 04. configure.ac 파일 작성 규칙 = 601 05. 사용 가능한 매크로 = 603 프로그램 결정 매크로 = 603 라이브러리 체크 매크로 = 610 헤더 파일 체크 매크로 = 613 06. 함수 체크 매크로 = 616 구조체 및 타입 체크 매크로 = 619 파일 체크 매크로 = 620 기타 유용한 매크로 620 07. 세밀 제어를 위한 configure.ac 작성 = 623 08. 설정 헤더를 사용하여 소스 파일에 설정 적용 = 627 13장 automake 01. automake의 구조와 원리 = 635 02. 따라 해 보기 = 636 03. Makefile.am 파일 작성 규칙 = 639 04. 재귀적 Makefile.am 파일 작성 = 644 6부 버전 관리 14장 Subversion, CVS 01. 버전 관리의 이해 = 653 버전 관리 정의 = 653 프로젝트 파일 버전 관리의 필요성 = 654 02. Subversion을 이용한 버전 관리 = 656 Subversion 소개 = 657 03. Subversion 서버 설정 = 659 저장소 생성 및 초기화 = 659 저장소 접근 방식 종류 이해 = 660 ssh를 이용한 서버 설정 = 661 http를 이용한 서버 설정 = 664 svnserye를 이용한 서버 설정 = 668 04. Subversion을 사용해 프로젝트 진행 = 671 에디트 환경 변수 설정 = 671 프로젝트 디렉토리 정리 = 671 import 명령으로 프로wpr트 서버에 등록 = 674 checkout 명령으로 프로젝트 파일 가져오기 = 676 commit 명령으로 변경된 내용 저장소에 반영 = 677 update 명령으로 저장소의 최신 내용 작업 디렉토리에 반영 = 679 log 명령으로 리비전별 로그 확인 = 681 diff 명령으로 변경된 내용 비교 = 682 blame 명령으로 라인 단위의 작성자 확인 = 684 status명령으로 작업 디렉토리 상태 확인 = 685 add 명령으로 파일이나 디렉토리를 버전 관리 대상에 추가 = 686 delete 명령으로 파일이나 디렉토리를 버전 관리 대상에서 제거 = 686 rename 명령으로 파일명이나 디렉토리명 변경 = 687 lock/unlock 명령으로 파일 잠금 및 해제 = 687 revert 명령으로 파일 이전 상태로 되돌리기 = 688 export 명령으로 버전 정보 제외한 프로젝트 파일만 가져오기 = 689 copy 명령으로 브랜치하기 = 690 merge 명령으로 머지하기 = 692 copy 명령으로 태깅하기 = 694 cleanup 명령으로 작업 사본 정리하기 = 695 dump/load 명령으로 백업 및 복구하기 = 695 충돌에 관한 해결법 = 696 기타 간단한 팁 = 701 05. CVS를 이용한 버전 관리 = 704 CVS소개 = 705 06. CVS 서버 설정 = 706 저장소 디렉토리 생성 및 초기화 = 706 cvs 사용자 생성 및 권한 설정 = 707 CVS 사용자 등록 = 707 CVS 서버 실행 = 709 07. CVS를 사용해 프로젝트 진행 = 710 CVS 서버에 로그인 = 711 import 명령으로 CVS 서버에 프로젝트 파일 등록 = 714 checkout 명령으로 프로젝트 파일 받아오기 = 716 commit 명령으로 수장한 내용을 저장소 디렉토리에 반영 = 717 update 명령을 사용해 현재 작업 디렉토리에 최신 소스 반영 = 719 소스 충돌 해결 = 720 add와 remove를 이용한 파일과 디렉토리 추가 및 삭제 = 721 파일 이전 버전으로 돌리기 = 726 파일 로그 및 특정 부분을 수정한 사람 확인하기 = 728 파일 버전대별 차이점 확인 = 729 현재 시점의 소스 태깅하기 = 731 브랜치하기 = 732 브랜치한 소스 머지하기 = 733 부록 A. 프로그래밍 유형별 가용 유틸리티 = 735 01. GUI 프로그래밍 = 737 QT 디자이너를 사용한 간단한 GUI 애플리케이션 만들기 = 738 glade를 사용해 간단한 GUI 애플리케이션 만들기 = 746 02. 네트워크 프로그래밍 = 755 부록 B. vim 명령 정리 = 759 부록 C. gcc 옵션 정리 = 767 부록 D. autoconf 매크로 정리 = 771 찾아보기 = 781