- Taschenbuch: 357 Seiten
- Verlag: No Starch Press; Auflage: 1 (26. Juli 2010)
- Sprache: Englisch
- ISBN-10: 1593272065
- ISBN-13: 978-1593272067
- Größe und/oder Gewicht: 17,8 x 2,5 x 23,5 cm
- Durchschnittliche Kundenbewertung: 1 Kundenrezension
- Amazon Bestseller-Rang: Nr. 136.571 in Fremdsprachige Bücher (Siehe Top 100 in Fremdsprachige Bücher)
- Komplettes Inhaltsverzeichnis ansehen
Autotools: A Practitioner's Guide to GNU Autoconf, Automake, and Libtool (Englisch) Taschenbuch – 26. Juli 2010
|Neu ab||Gebraucht ab|
Wird oft zusammen gekauft
Kunden, die diesen Artikel gekauft haben, kauften auch
Es wird kein Kindle Gerät benötigt. Laden Sie eine der kostenlosen Kindle Apps herunter und beginnen Sie, Kindle-Bücher auf Ihrem Smartphone, Tablet und Computer zu lesen.
Geben Sie Ihre Mobiltelefonnummer ein, um die kostenfreie App zu beziehen.
Wenn Sie dieses Produkt verkaufen, möchten Sie über Seller Support Updates vorschlagen?
Über den Autor und weitere Mitwirkende
John Calcote is a Senior Software Engineer and Architect at Novell, Inc. He's been writing and developing portable networking and system-level software for nearly 20 years and is active in developing, debugging, and analyzing diverse open source software packages. He is currently a project administrator of the OpenSLP, OpenXDAS, and DNX projects (open source software available at http: //www.sourceforge.net), as well as the Novell-sponsored FLAIM database project (open source software available at http: //developer.novell.com).
Welche anderen Artikel kaufen Kunden, nachdem sie diesen Artikel angesehen haben?
Practical examples included.
Die hilfreichsten Kundenrezensionen auf Amazon.com (beta) (Kann Kundenrezensionen aus dem "Early Reviewer Rewards"-Programm beinhalten)
My first assignment was to add several features to a program written in C that runs on Red Hat Linux. The original programmer used the Net Beans IDE. I installed Net Beans and opened the Net Beans project file. I opened the makefile and was stunned to find that it was a confusing machine generated mess. I couldn't begin until I was confident that I knew where and why each of the makefile settings were set. I eventually decided to start from scratch and rewrite the entire application.
It quickly became clear what I needed to do. I uninstalled Net Beans and decided to call the native Linux compiler / linker (GCC) directly without using an IDE. To help me along the way I ordered this book. This book quickly filled in my makefile knowledge gaps and pointed me in the right direction. Armed with this book and the GNU coding standards that it recommended, I opened up the VIM text editor and wrote one of my best programs to date. Looking at my makefile, configure script, and other source code you would think that I had been writing Linux programs for several years. I had often compiled source code using the commands `configure', `make', and `make install' but didn't totally understand the underlying process until I read this book. This book is accurate, well written, and priceless!
This "Autotools" book is an excellent introduction in the subject, enabling the reader to build their own autoconf/automake build systems. It is well structured by going from easy (just using autoconf) to complex (libtool) and gradually building on the topics that it explained earlier. This makes the book easy to ready and to follow, but I would recommend to try out some of the chapters before moving to the next one to make sure you understand it well as the next chapter will assume you do :P
The book consist of 11 chapters and I'd probably logically divide it in two parts. 1-7 is sort-of the basics and then 8-11 is examples and advanced tips. Chapter 1 is a small overview chapter explaining the history of autotools and the problem that it is trying to solve. Chapter 2 covers the GNU coding standards which is important to understand as automake is build on top of that. Chapter 3-4 cover the most basic of your autotools build system: autoconf. Chapter 5 then introduces the automake tool to this and it reworks earlier examples to show how automake simplifies the work needed to be done. Chapter 6-7 then adds shared libraries to the mix and explains why they are a pain in the butt and how libtool helps with that. That sort-of covers the basics of autotools.
Chapter 8-9 take an open-source project (FLAIM, a database that originated at WordPerfect) and changed the build system from normal make to autotools. Flaim is an interesting project as it covers quite a lot of languages and problems. During this, it also introduces new autotools functionality. Chapter 10 looks a bit at what is happening inside the autotools black box by explaining the m4 macro language and how to write macros yourself. The last chapter has a catalog of useful tips when creating your own autotools project.
I was myself setting up a somewhat complex autotools build system and this book came with the right content and the right time. Without it, I'm not sure if I would have succeeded, especially since the autotools knowledge on the web feels quite scattered. So, I'll give this 4 stars as it was excellent. It isn't 5 stars as it is a fairly niche book and only useful for people who need to setup an autotools build system. A very useful book!
I guess it's no surprise that sooner or later you run into problems as you build OSS on various operating systems.
Sometimes the problem is as simple as a missing dependency: You just go and install the missing dependency and you're done.
But other times things are trickier: You run into some incompatible directives or symbols in one of the source files; for instance when you try to configure babl-0.1.10 on Mac OSX (Leopard/PowerPC in particular) you 're likely to run into this kind of error: "babl-palette.c:22:20: error: values.h: No such file or directory" To solve it, I had to try a different version of babl package and the version I found happened not to contain 'configure' script and that meant I had to form the configure script myself. And that meant I needed to know how the Autoconf worked.
Sometimes even after you successfully built and installed the package, you may experience runtime errors. For instance, if you successfully compile and install PHP with the GD extension on Leopard/PowerPC Mac, the moment your PHP application uses GD, PHP crashes because the GD uses some function of FreeType library and that causes a crash on Leopard's CarbonCore. To eliminate that you have to recompile the FreeType by giving the "--with-quickdraw-carbon=no" option to the configure script. That means you have to know how the configure works from the point of view of the developer and that might mean you'd better know how that particular software package was prepared.
Eventually I decided to learn Autotools and bought this book. But I soon found that it was quite hard to understand the contents. The basic problem seems to be that the author assumes that I'm an open source package maintainer; that's actually written inside the book. But an open source package maintainer almost certainly knows and uses Autotools, so why should she or he study a book on Autotools?
At the beginning of the preface, a section where you usually see stuff like acknowledgements, the author talks about a book called "GNU Autoconf, Automake and Libtool" the 'goat book' in short and says that for more than 10 years it was the only 3rd party Autotools book. I noticed that quite accidentally after I bought this book and after I spent years understanding nothing from the book. Later I bought that 'goat book' and only then the things started to make sense. If the author had listed that 'goat book' in a place where I could notice more easily, I would go and take a look at it earlier and that would save me many troubles.
I mean, the old goat book explains the Autotools way much better than this book. And just recently, I've found a "Hello World!" tutorial on Autotools on the Internet (markuskimius.wikidot.com/programming) Even that free tutorial explains the Autotools business much better than this book, because it shows you how to build any project in a portable way step by step. More importantly, it explains the rationale behind the use of each command in the autotools suite.
The author also makes assumptions about when not to use Autotools and seems to conclude that Autotools should not be used to compile applications for the Windows. So he eliminates everything about MinGW/MSYS and the Cygwin. But the majority of desktops and laptops use Windows and I'm expected to be able to compile open source apps for the Windows too. For instance, I build pure-ftpd for Windows as a hobby project and I require that the project doesn't depend on cygwin1.dll, it must run just natively on Windows. That requires me to edit several source and header files, possibly config.h file and so on. This book doesn't even have a page about how to compile OSS on Windows. As a comparison, the old goat book does have several pages on Cygwin and that gives you at least clues about what to do in a Windows environment.
Summary: I consider myself unlucky having bought this book. I was expecting to gain an understanding of how Autotools worked and how to build projects in a portable way. I have gained the Autotools experience using mainly other resources some of which I mentioned above and by working on my own specific projects, doing lots of trial and error routines.