Generated by GPT-5-mini| GNU Libtool | |
|---|---|
| Name | GNU Libtool |
| Developer | Free Software Foundation |
| Released | 1996 |
| Programming language | Bourne shell |
| Operating system | Unix-like |
| Genre | Software development tool |
| License | GNU General Public License |
GNU Libtool GNU Libtool is a portable library-building tool distributed by the Free Software Foundation that automates creation of shared and static libraries on Unix-like systems. It complements build systems such as Autoconf and Automake and is used in projects associated with organizations like Debian, Red Hat, Canonical (company), and GNOME to abstract platform-specific linker and loader differences. Libtool has been referenced in documentation from NetBSD, FreeBSD, OpenBSD, Solaris (operating system), and companies like IBM, Intel, Oracle Corporation.
Libtool provides a layer between developers and platform-specific linkers such as GNU linker, GNU Binutils, Microsoft Visual C++, and Sun Studio. It integrates with configuration systems exemplified by Autoconf Archive, pkg-config, CMake (as an alternative), and package systems like RPM Package Manager, Debian packaging, Homebrew and MacPorts. Major open-source projects including GIMP, GTK+, LibreOffice, OpenSSL, and PostgreSQL have used libtool or tools inspired by it. Libtool supports language toolchains for C, C++, Fortran, and has been used in ecosystems led by entities such as X.Org, KDE, Mozilla Corporation, and Apache Software Foundation.
Work on Libtool began in the context of the GNU Project alongside Autoconf and Automake during the 1990s, influenced by portability efforts from projects like X Window System and GNU Compiler Collection. Key contributors and maintainers have been associated with organizations such as Free Software Foundation Europe, Red Hat, SUSE, and individuals with affiliations to MIT, University of California, Berkeley, and Carnegie Mellon University. The project evolved through interactions with standards such as POSIX, System V, and ELF binary formats, and through cooperation with platform vendors like Sun Microsystems and Microsoft Corporation for Windows portability layers. Historical milestones include integration into major distributions such as Debian GNU/Linux, Fedora, and Ubuntu (operating system), and influence on later tools like Autotools-based workflows and build systems promoted by Eclipse Foundation projects.
Libtool's design centers on abstraction of platform-specific link-edit behavior and runtime dynamic loading semantics found in systems like Linux, FreeBSD, AIX, HP-UX, and macOS. Features include unified commands for creating shared objects, managing versioning policies compatible with Semantic Versioning practices used by projects including GNOME Project and KDE. It emits convenience libraries and wrapper scripts that interact with runtime linkers such as ld.so, dyld, and load-time mechanisms used in environments orchestrated by systemd or service ecosystems like Apache HTTP Server. Libtool handles symbol visibility challenges that matter to projects like OpenOffice, GStreamer, Qt Project, and Boost.
Typical usage embeds libtool macros in Makefile templates generated by Automake and parameterized by Autoconf tests; developers in distributions like Arch Linux and Gentoo follow guidelines from communities including Debian Developers and Fedora Project. Integration touches package metadata tools such as dpkg, rpm, and build automation services like Jenkins, Travis CI, GitHub Actions, and GitLab CI. Libtool often collaborates with language-specific systems like GNU Fortran, GCC, Clang (compiler), and cross-compilation toolchains used by Yocto Project and Buildroot, and it has been adapted in embedded contexts by vendors including Texas Instruments and NXP Semiconductors.
Implementation is largely shell-script based around macros and wrapper scripts invoking toolchains such as GNU make, make, ld, and compiler drivers like gcc and g++. It manipulates file naming and directory conventions used by Filesystem Hierarchy Standard and packaging standards used by Debian Policy and Filesystem Hierarchy Standard (FHS). Libtool encodes platform-specific heuristics for formats including ELF, Mach-O, and COFF and coordinates with linker scripts and symbol table utilities such as nm and objdump. Its scripts detect features via tests that query headers and libraries influenced by standards bodies like IEEE and The Open Group.
Libtool has been widely adopted in GNU and non-GNU projects, and its patterns influenced tools used by entities like Microsoft for Windows portability layers and by cloud-native projects under Cloud Native Computing Foundation. Alternatives and successors include CMake, Meson (software), SCons, Bazel (software), and language-specific package managers such as Cargo (package manager), npm (software)],] pip (package manager), and Conan (package manager), each favored by communities including Mozilla, Google, Facebook, and Apple Inc. depending on goals. Some ecosystems migrated to alternative linking strategies advocated by projects like LLVM and Clang while distributions including OpenBSD and NetBSD maintain compatibility layers for legacy libtool-using packages.