이미 소장하고 있다면 판매해 보세요.
|
1부 튜토리얼
1장. 튜토리얼 01. 간단한 소스 프로그램 작성 02. gcc 컴파일러로 실행 파일 생성 03. make를 사용해 컴파일 04. 문제 발생, 벌레를 잡아라 05. svn을 사용한 프로젝트 버전 관리 06. doxygen을 이용한 문서화 07. autotools를 사용한 이식성 높은 빌드 08. RPM 패키징 2부 에디팅 2장. vi와 vim 에디터 01. vi 개괄 02. 기본적인 vim 사용법 트레이닝 03. vim을 강력하게 하는 고급 테크닉 04. vim의 조력자 ctags, cscope, 기타 플러그인 05. 개발자를 위한 vim의 유용한 팁 06. 개발자들의 vim 설정 3장. 기타 편집기 소개 01. emacs 02. 이클립스 03. gedit 04. KDevelop 05. anjuta 3부 컴파일과 링킹 4장. gcc compiler 01. 컴파일의 의미 02. 알아 두면 정말 유용한 C 소스 컴파일 과정 03. gcc를 사용해 원하는 컴파일하기 04. gcc를 이용한 최적화 컴파일 05. 기타 알아 두면 좋을 만한 것 5장. ld linker 01. 링킹의 기본 이해 02. ELF 바이너리 포맷 구조 03. ld를 사용한 링킹 04. 링커 스크립트 05. ld를 사용한 고급 링킹 테크닉 06. 라이브러리를 만들기 6장. gas assembler 01. gas를 사용해 어셈블하기 02. 어셈블리 파일의 작성 03. 인라인 어셈블리의 사용 7장. 삶을 윤택하게 하는 바이너리 유틸리티 01. 바이너리 유틸리티 사용하기 4부 디버깅 8장. gdb 디버거 01. 단순하지만 매우 강력한 디버거 gdb 02. gdb를 이용한 디버깅 테크닉 9장. GUI 디버거 DDD의 사용 01. DDD란 무엇인가? 02. DDD를 사용한 디버깅 10장. 기타 디버깅 툴 01. trace 유틸리티를 사용한 프로그램 문제점 분석 02. 문제 진단 유틸리티 5부 프로젝트 빌드 11장. make 01. make의 이해 02. 매크로의 사용 03. 확장자 규칙의 사용 04. 더미 타겟의 사용 05. 명령 사용 규칙 06. 재귀적 make의 사용 07. 조건부 수행 08. 함수의 사용 09. 특수 타겟 10. make 최종 정리 12장. autoconf 01. autoconf란 무엇인가 02. 따라 해 보기 03. autoconf의 구조와 원리 04. configure.ac 파일 작성 규칙 05. 사용 가능한 매크로 06. 함수 체크 매크로 07. 세밀한 제어를 위한 configure.ac 작성 08. 설정 헤더를 사용해 소스 파일에 설정 적용 13장. automake 01. automake의 구조와 원리 02. 따라 해 보기 03. Makefile.am 파일 작성 규칙 04. 재귀적 Makefile.am 파일 작성 6부 프로젝트 버전 관리 14장. Subversion, CVS 01. 버전 관리의 이해 02. Subversion을 이용한 버전 관리 03. Subversion 서버 설정 04. Subversion을 사용해 프로젝트 진행 05. CVS를 이용한 버전 관리 06. CVS 서버 설정 부록A. 프로그래밍 유형별 가용 유틸리티 01. GUI 프로그래밍 02. 네트워크 프로그래밍 부록B. vim 명령 정리 부록C. gcc 옵션 정리 부록D. autoconf 매크로 정리 찾아보기 |
|
개정판이 나오기까지
해묵은 원고를 지금에서야 출판한다. 2007년 9월부터 쓰기 시작했으니 햇수로 총 3년이 걸린 것이다. 쓰는 데 2년, 출판사 일정으로 1년이 더 걸렸다. 쓰는 데 이렇게 오랜 시간이 걸린 것은 필자의 사정 때문이다. 초판과 개정판 사이 필자는 생애 처음으로 회사란 곳에 들어가 봤고, 회사를 설립도 해 봤다. 본 서적을 쓰는동안 필자의 삶은 참으로 굵직굵직하게 흘러갔었다. 원고를 쓰는 내내 저작 활동은 필자의 즐거운 주말을 방해하는 훼방꾼이었다. 매주 필자는 항상 무거운 마음으로 주말을 보냈었다. 그래서 이렇게 마지막 서평을 쓰는 지금 기분이 무척 홀가분하다. 다만, 아쉬운 점은 저작 기간이 너무 오래 걸렸다는 점이다. 현재 페도라 13이 나와 있는 시점에 이 책은 페도라 7로 설명하고 있고, gcc-4.5.1이 나와 있는 시점에 2007년도에 작성하여 gcc-4.1.2를 설명하고 있다. 그렇지만 내용에는 큰 변화가 없기에 독자는 걱정하지는 않아도 된다. 다만, 필자가 독자에게 좀 더 잘해 주지 못한 것 같아 이 점이 무척 아쉬울 뿐이다. 2004년도에 이 책의 초판을 쓰고 서평을 적을 때 개인적으로 초판에 대해 평가한 점수는 60점이었다. 그래서 많이 부끄러웠다. 이번 개정판은 70점이다. 독자에게 100점짜리를 대접하지 못해 송구스럽다. 언젠가 100점짜리를 써서 드리고 싶긴 하지만, 실제로 그럴지는 모르겠다. 책을 쓸 때 필자는 항상 "내가 다시 책을 쓰면 사람이 아니다"라고 다짐하곤 한다. 저작 활동은 그만큼 고되고 고독한 작업이기 때문이다. 그래서 지금은 영원히 다시 쓰고 싶지가 않다. 하지만 모든 산고가 그렇듯 출산의 순간은 고통스럽지만, 시간이 지나면 빨리 잊히는 것도 산고이기에 다짐이 지켜질지, 다시 100점짜리에 도전할지는 "잘 모르겠다"고 하는 것이 맞을 것 같다. 어쨌든 이 책을 쓰는 내내 독자에게 조금이라도 도움이 될 수 있기를 바랐다. 서평을 쓰는 마지막 이 순간까지도 그러고 있다. 부디 필자의 소망이 이루어지기를 간절히 바란다. 독자 중에 이 책의 내용이 아주 재미있었거나 가슴 두근거리게 하는 사람이 있다면 필자에게 연락이라도 한번 주었으면 하고 바란다. 필자는 비록 작지만 기술적으로는 한국 최고인 System S/W 전문 회사를 경영하고 있다. 필자는 그러한 사람들과 함께 회사를 키워가고 싶고, 비록 그렇게 인연이 되지 않을지라도 그러한 사람이 존재한다는 것이라 도 알고 지내고 싶다. 그러니 그러한 사람이 있다면 꼭 필자에게 메일이라도 한 통 보내 주길 간곡히 부탁 드린다. 마지막으로 이 책이 나올 수 있게 도와주신 분들에게 감사드리고 싶다. 먼저 나의 영원한 멘토이자 형님이신 건국대학교 박정근 교수님께 감사드린다. 이 책의 많은 부분은 박정근 교수님의 영향을 받았다. 그리고 박정근 교수님이 없었다면 어쩌면 필자가 이 자리에 존재하지도 못했을 거라는 생각을 가지고 있다. 그분께 "좋아하고, 존경하고, 세 상에 존재해 주셔서 감사하다"는 말을 전하고 싶다. 곧 있으면 더 큰 세계적인 무대로 떠나시는 김홍석 박사님께도 감사드린다. 이 책의 내용 중 gcc 컴파일러 부분은 그분께 많은 영향을 받았다. 감사와 함께 더 큰 무대에서 그분께 "항상 행복이 함께하기를 기원한다"는 말을 전하고 싶다. 필자에게 영원한 스승이신 삼성전자 김정한 상무님께도 감사드린다. 이 책의 많은 내용 중 그분에게서 배운 것들이 많이 있다. 그리고 삶을 살아가는 자세 역시 그분에게서 배웠기에 그분께 "존경하고, 감사드린다"는 말을 꼭 전하고 싶다. 슈퍼 엔지니어이자 필자의 영원한 친구인 경민이에게 감사드린다. 경민이는 잘 모르겠 지만 알게 모르게 필자에게 많은 영향을 끼쳤다. 경민이에게 "항상 고맙고, 다음 주 소주 한잔하자"는 말을 전하고 싶다. KIST 김수현 박사님께도 감사드린다. 비록 뒤늦게 뵙게 되어 이 책에 직접적인 영향을 주지는 않았지만, 항상 도움만 받고 있기에 이 자리를 빌어 "더 잘해드리지 못해 미안하고, 감사드린다"는 말을 꼭 전하고 싶다. 필자의 회사 동료들에게도 감사드린다. 평생의 친구이자 동반자이고, 필자에게 "삶의 이유"라는 사실을 꼭 전하고 싶다. 마지막으로 사랑하는 가족에게 감사드린다. 먼저 필자를 있게 하였고, 삶으로써 필자에게 항상 감동과 지혜를 가르쳐 주시는 부모님께 "영원히 사랑하고, 존경하고, 감사드린다"는 말을 전하고 싶다. 그리고 항상 필자에게 응원을 아끼지 않는 동생 승권이에게도 "사랑하고, 고맙다"는 말을 함께 전하고 싶다. 그리고 이 책을 읽어 주신 모든 독자분들께 감사드린다. 미천한 필자의 능력이 부디 0.001%라도 세상에 도움이 될 수 있기를 간절히 기원한다. 2010년 8월 4일 불면의 밤에 백창우 ---머리말 중에서 |
|
뛰어난 프로그래머는 좋은 유틸리티를 적재적소에 사용할 줄 안다
프로그래머는 누구나 도구를 쓰며, 훌륭한 프로그래머는 적재적소에 도구를 사용할 줄 안다. 유닉스/리눅스 프로그래밍을 위한 도구는 많지만, 이에 대한 체계적인 안내서가 없었다. 이 책은 프로그래밍을 쉽게, 프로그램을 견고하게 만들려면 무엇을 써야 하는지 알려준다. 이 책에서는 유닉스/리눅스 프로그래머들이 필수로 알아야 하는 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를 이용한 패키지 관리법 |