| Last Modified On : | May 21, 2008 10:37 AM PDT |
Rate |
|
by Alan Zeichick
Discuss ›
Getting Started with a Linux* Software Development Toolchain
For many Windows* developers, Linux* presents a learning challenge. Not only does Linux have a different programming model, but it also requires its own toolchain, as programmers must leave behind the Visual Studio* (VS) or Visual Studio* .NET (VS.NET) suites and third-party plug-in ecosystem. This article helps Windows developers understand the options available as they seek to replicate, on Linux, the rich and efficient toolchain experience they've long enjoyed on Windows.
Making the move to Linux can be an exciting and challenging opportunity for Windows developers. The power of the open-source operating system, including its support for a wide variety of hardware platforms, is appealing. So too is its now-legendary stability, performance and scalability. But programmers seeking to write software for Linux will need the appropriate native software development tools -- and finding the right toolchain can be a challenge in its own right.
Discuss ›
Why is there a toolchain challenge? The short answer is, because the Linux world has grown organically, with separate teams and open-source projects building different parts to suit their own needs and schedules. There's no unifying vision between the operating system and development tools. The open-source project led by Linus Torvalds that just introduced kernel 2.6, for example, is unrelated to the contributors who evolve the GNU Compiler Collection*, Borland Kylix*, the Intel® VTune™ Performance Analyzer, or the open-source Eclipse* project founded by IBM.
By contrast, Microsoft designs and builds its tools (now consolidated under the Visual Studio suite) in close lockstep with each evolution of the operating system, with an eye not only to adding those features that developers want most, but also guiding programmers into a specific software-development model.
Plus, Microsoft, through VS and VS.NET, as well as its Visual Studio Integration Partner program and MSDN* subscription service, intends its tools to be the "official" software development resources for Windows. There's no such default "official" choice with Linux. Even though most Linux distributions come with a wide variety of command-line tools, and even some GUI offerings, there's no particular reason to use those tools instead of other open-source or commercial-license products.
A related difference is that while Microsoft's tools are generally tightly integrated with Windows and each other, there's no tightly integrated Linux toolchain -- though perhaps Eclipse and the Free Software Foundation's GNU tools come the closest. That means for the most part, developers will need to carefully evaluate individual components, and then integrate them together. It's more work than simply installing VS.NET on a Windows XP* workstatio n -- but well worth the effort.
(Important note: While we'll be discussing many tools here, most of which your author has used or evaluated personally, these tools are not being specifically recommended or endorsed for your individual application. As with choosing any programming tools, you should download and test the tools for yourself, to ensure that they suit your own needs, as well as the needs and coding standards of your clients/employer.)
Discuss ›
Toolchains exists on different levels. Every programmer needs a basic toolchain, which comprises the fundamental software-development tools needed to write software. But there's also the extended toolchain, which adds functions required for distributed teams or more advanced enterprise development.
The basic toolchain, which will be discussed in this article, centers on an integrated development environment or a smart language-aware code editor. Working alongside the IDE, or editor, are modelers, compilers, debuggers, code analyzers and libraries. Those other parts might be wholly independent tools, completely integrated tools, or might actually be somewhere in-between -- for example, a profiler that runs independently, but which can be invoked by a menu option on the IDE. The basic toolchain is generally operating-system dependent.
By contrast, the extended toolchain adds layers that extend beyond the programmer's desktop to server-based or Web-based collaborative systems. The extended toolchain includes requirements management tools, source-code and other asset-management tools, version-control systems, large-scaled modeling tools, build-management system, project management tools, and so-on. Most extended-toolchain tools are available cross-platform, or with web-based interfaces.
Moving from Windows to Linux doesn't generally affect those team-oriented tools; it's the code editors, compilers, libraries, and so-on which are of more concern to most Windows developers seeking to make the switch to Linux. These also tend to have the steeper learning curve.
Discuss ›
To most developers, the most visible tool -- and burned into the screen's phosphor 24/7 -- is the editor or IDE. While the editor's user interface doesn’t directly affect the quality of the binaries generated by the programmer, a good editor can make the coding process seem effortless. Visual cues point out syntax errors and key code constructs; keyboard macros ease repetitive tasks. Wizards, keyword-completion, and drag-and-drop features slash coding time. A good IDE or code editor is worth its weight in gold.
Editors and IDEs are also among the most divisive topics to developers. While I've never actually seen a fistfight between emacs and vi adherents, editors have always been a perilous topic, and like the choice of golf clubs or power tools, is a very personal one. So, without further ado, and in fisticuff-avoiding alphabetical order, here is a selecti on of just some of the top-notch IDEs for native Linux developers.
The choice of a code editor or integrated development environment may be hardest to make. There are so many choices, so many visual styles, and so few metrics one can use to determine which works best for a specific developer, development team, or project.
Fortunately, when assembling a Linux toolchain, programmers can experiment with different editors while separately evaluating the other elements, including the C/C++ compiler, debuggers, libraries, static analyzers, run-time profiles, build tools, documentation tools -- in fact, one of the real tests of a code editor or IDE will be the ease with which one can incorporate other tools' functionality into its user interface, or at least be able to context-shift seamlessly into another tool.
Rather than attempting to present a comprehensive list of Linux development -- which can be easily gathered with a Web search -- here are just a few tools for native C/C++ projects in Linux, that come highly recommended.
Discuss ›
Windows developers considering a move to Linux, or who want to add Linux development skills to their portfolio, face a learning curve -- a new operating system, new APIs, new coding model, and new tools.
While no Linux-based toolchain will offer the out-of-the-box, one-stop-shopping experience that once faces with Microsoft's Visual Studio .NET, there are many powerful alternatives. Linux developers have their choice of fully functional code editors and integrated development environments, compilers, debuggers, profilers, libraries -- it's all there.
Yes, it's more work to find and assemble a best-of-breed Linux development toolchain. But the end result will be worth the effort.
In the Windows world, there's an increasingly close blending of the classic Win32 and newer .NET paradigms, and it's clear that for most developers, especially those of server applications, .NET and ASP.NET are the preferred directions.
The relationship between Linux and Java is in some ways synergistic to that of Windows and .NET: For many programmers and enterprises, Linux is the preferred operating system for hosting high-performance Java virtual machines and J2EE application servers. However, many developers and businesses see a value in targeting Linux natively with C/C++ software.
The emphasis of this article is on finding a toolchain for native Linux development, primarily in C/C++. Java developers may wish to investigate different options, because the requirements are very different -- for example, Java doesn't need a separate compiler.
Where to start? Check out the Eclipse project, and tools based on it, such as IBM WebSphere Studio Application Developer, are increasingly popular for Java developers. Also popular are Borland JBuilder*, Sun NetBeans* and Sun ONE Studio* (now called Sun Java Studio*), Oracle* JDeveloper* and BEA WebLogic* Workshop.
There are a plethora of other Java tools available, many from the Apache Software Foundation, or from other open-source projects or commercial vendors. Most of them are either 100% Pure Java, in which case they'd run fine on any Linux development workstation equipped with a Java virtual machine, or in C/C++ with Linux versions available.
Discuss ›
Articles
Developer Centers
A former mainframe software developer and systems analyst, Alan Zeichick is principal analyst at Camden Associates, an independent technology research firm focusing on networking, storage, and software development.
