GNU Make Book - Linux 빌드 자동화에 대한 설명

리눅스에 대한 글쓰기뿐만 아니라 배포판과 도구에 대한 리뷰와 튜토리얼을 쓰면서 나는 또한 소프트웨어 개발에 많은 관심을 가지고있다. 불행히도, 그 소프트웨어 개발의 99.9 %는 Windows 플랫폼에서 발생합니다.

저는 C ++, Visual Basic, VB.NET 및 C # 개발자로서 20 년 이상의 경험을 쌓았으며 DBA와 개발자 모두 SQL Server를 사용하고 있습니다.

내가 잘하지 못하는 것은 리눅스 용 소프트웨어를 개발하는 것이다. 그것은 내가 결코 정말로 귀찮게 여기지 않은 것입니다. 주된 이유는 하루 동안 소프트웨어를 개발 한 후에 내가하고 싶은 마지막 일은 저녁 시간에 더 많은 소프트웨어를 작성하는 것입니다.

필자는 스크립팅을하고 낯선 작은 프로그램을 작성하는 것으로 분명히 좋아한다. 이들은 일반적으로 Raspberry PI의 전자 기반 프로젝트를위한 것 입니다.

Windows 플랫폼에있는 많은 개발자들이 처음으로 Linux로 옮길 때 어려움을 겪는 것은 응용 프로그램을 빌드하고 패키지화하는 데 필요한 도구에 대해 배우는 것입니다.

일반적으로 컴파일 된 코드 (PHP, Perl, Python)가 필요 없으며 웹 서버의 설정 장소에 파일이 배포되기 때문에 개발할 가장 쉬운 유형의 응용 프로그램은 웹 응용 프로그램입니다.

Linux 용으로 개발 된 많은 응용 프로그램은 C, C ++ 또는 Python을 사용하여 개발되었습니다. 단일 C 프로그램을 컴파일하는 것은 상대적으로 쉽지만 여러 종속성을 가진 여러 개의 C 프로그램을 컴파일해야하는 경우에는 좀 더 까다로워집니다.

GNU Make는 빌드 자동화 스크립트 도구로서, 여러 가지 방법으로 여러 번 응용 프로그램을 컴파일하는 데 도움을줍니다. 예를 들어, 값에 따라 64 비트 또는 32 비트를 사용하여 응용 프로그램을 컴파일하는 매개 변수를 제공 할 수 있습니다.

John Graham-Cumming은 GNU Make 사용자가 GNU Make와 관련된 복잡성에 대해보다 확실하게 이해할 수 있도록 GNU Make 책을 작성했습니다.

이 책은 여섯 장으로 나뉘어져 있습니다.

  1. 재검토 된 기본 사항
  2. Makefile 디버깅
  3. 건축 및 재건축
  4. 함정과 문제
  5. 봉투를 밀기
  6. GNU Make 표준 라이브러리

저는이 책이 초보자를 대상으로 한 것이라고는 생각하지 않습니다. 왜냐하면 "GNU Make 란 무엇인가?", "Make 파일을 만드는 방법은 무엇입니까?", "왜 GNU Make는 무엇입니까?"와 같은 새로운 주제를 배울 때 기대할 수있는 명확한 설명이 없기 때문입니다. 각 프로그램을 하나씩 컴파일하는 것보다 더 나은 것을 사용하고 있습니까? " 와 "GNU Make를 사용하여 프로그램을 어떻게 컴파일합니까?" 이 모든 주제 영역은 GNU Make 매뉴얼 에서 다룹니다.

첫 번째 장을 "기본 사항"이라고 부르며 "기본 사항"을 반박한다는 사실은 시작하기 전에 주제에 기초해야한다는 것을 분명히 보여줍니다.

첫 번째 장에서는 변수 사용, 명령에 사용되는 환경 및 $ (쉘) 환경과 같은 모든 기본 사항을 다룹니다. 챕터가 진행됨에 따라 비교, 목록 및 사용자 정의 함수에 대해 알 수 있습니다.

잠시 동안 GNU Make를 사용하고 있지만 아직 전문가라고 생각하지 않는다면 즉시 알려지지 않을 수있는 특정 복잡성을 이해하는 데 도움이되는 좋은 힌트와 팁이 있습니다.

두 번째 장은 스크립트 작성시 오류를 잡으려고하는 사람들을위한 신의 선물이 될 것입니다. "Makefile Debugging"섹션은 Makefile을 디버깅하는 데 유용한 힌트와 팁으로 가득 차 있으며 변수 값을 출력하고 모든 변수의 값을 덤프하는 섹션을 포함합니다. 더 자세한 내용은이 장에서 스크립트를 단계별로 실행할 수있는 GNU 디버거에 대한 안내서가 있습니다.

세 번째 장에는 예제 makefile이 포함되어 있지만 그 이상의 내용은 반복해서 실행할 수있는 Makefile을 작성하는 방법을 보여줍니다.

"함정과 문제"에서는 = 및 : =, ifndef 및? = 같은 특정 용어 간의 차이점을 살펴 봅니다.

GNU Make를 적극적으로 사용하지 않기 때문에 지식을 아주 기초적으로 다루었 기 때문에 주제의 일부가 내 머리 위로 많이 흘러갔습니다.

내가 "봉투를 밀기"장에 도착할 무렵에는 내 눈이 다소 윤이났다.

나의 주요 요약은, 내가이 책을 요약해야만한다면, 저자는 자신의 물건을 분명히 알고 가능한 한 많은 정보를 전하려고 시도했다는 것이다.

문제는 때로는 주제 전문가가 무언가를 쓰려고 할 때 "오, 그게 쉽다. 당신이해야하는 전부는 ...."그들에 대한 아우라 다.

내 뒷문에있는 고무 도장은 지난 주에 생겨 났으며 아직 몇 년 전인 것처럼 보증서에 나와있는대로 회사에 전화를 걸었습니다.

전화의 여성이 말했다, "제로 그래, 나는 당신에게 새로운 도장을 보낼 것이다"고 말했다.

나는 "오, 내가 직접 할 수 있니? 내가 할 수있는 일이야."라고 말했습니다.

대답은 "할 수 있음을 확신합니다. 문밖에서 벗어나 도장을하고 다시 문을 두는 것만 빼면됩니다."

이제 나의 즉각적인 생각은 "와우, 조금 뒤로 되감고. 문을 벗어!?". 나는 문을 열어 도장을 달고 문을 다시 채울 자격이 없습니다. 나는 그것을 전문가에게 맡긴다.

이 책을 사용하면 유용한 책을 찾기 전에 다른 책과 Makefile을 작성하는 경험이 필요하다고 느낍니다.

제공된 힌트, 팁 및 지식은 사람들이 "오, 그렇게하는 이유"또는 "나는 당신이 그렇게 할 수 있다는 것을 깨닫지 못했습니다"라고 말하는 데 도움이 될 것이라고 생각합니다.

따라서 GNU Make에 대한 고급 지식이나 중급 이상의 내용을 찾고 싶다면 초보자를위한 책이 아니기 때문에이 책을 사야 만합니다.