Content deleted Content added
edit to view Tags: categories removed references removed |
m Reverted edits by 45.114.88.179 (talk) (HG) (3.3.1) |
||
Line 1:
{{Lowercase title}}
[[Image:Autoconf-automake-process.svg|thumb|400px|Flow diagram including configure, [[autoconf]] and [[automake]], three tools in the GNU Build System]]
A '''configure script''' is an executable script designed to aid in developing a [[computer program|program]] to be run on a wide number of different computers. It matches the [[Library (computer science)|libraries]] on the user's computer, with those required by the program before [[compiler|compiling]] it from its [[source code]].
As a common practice, all configure scripts are named "configure". Usually, configure scripts are written for the [[Bourne shell]], but they may be written for execution in any desired shell.
== Usage ==
Obtaining software directly from the source code is a common procedure on [[Unix]] computers, and generally involves the following three steps: configuring the [[makefile]], compiling the code, and finally installing the executable to standard locations. A configure script accomplishes the first of these steps. Using configure scripts is an automated method of generating [[makefile]]s before compilation to tailor the software to the system on which the executable is to be compiled and run. The final executable software is most commonly obtained by executing the following commands in a shell that is currently pointing to the directory containing the source code:
<pre>
./configure
make
make install
</pre>
One must type <code>./configure</code> rather than simply <code>configure</code> to indicate to the shell that the script is in the current directory. By default, for security reasons, [[Unix]] operating systems do not search the current directory for executables so one must give the full path explicitly to avoid an error.<ref>{{cite web |url=http://www.control-escape.com/linux/lx-swinstall-tar.html |title=Compiling Linux Software from Source Code |publisher=Control-Escape's Linux Help Engine |accessdate=20 November 2010}}</ref>
Upon its completion, <code>configure</code> prints a report to <code>config.log</code>. Running <code>./configure --help</code> gives a list of command line arguments, for enabling or disabling additional features such as:
<source lang="sh">
./configure --libs="-lmpfr -lgmp"
./configure --prefix=/home/myname/apps
</source>
The first line includes the <code>mpfr</code> and <code>gmp</code> libraries. The second line tells [[make (software)|make]] to install the final version in <code>/home/myname/apps</code>. The <code>INSTALL</code> file contains instructions should the prescribed steps fail.
== Generating <code>configure</code> ==
Software developers simplify the challenge of [[cross-platform]] software development by using GNU's [[Autotools]].<ref>{{cite web |url=https://www.gnu.org/software/autoconf/ |title=Autoconf - GNU Project - Free Software Foundation (FSF) |publisher=GNU Operating System |accessdate=20 November 2010}}</ref> These scripts query the system on which they run for environment settings, platform architecture, and the existence and ___location of required build and runtime dependencies. They store the gathered information in <code>configure.ac</code> or the now deprecated <code>configure.in</code> to be read by <code>configure</code> during the installation phase.
== Dependency checking ==
In new development, library dependency checking has been done in great part using [[pkg-config]] via the [[M4 (computer language)|m4]] macro, PKG_CHECK_MODULES. Before pkg-config gained popularity, separate m4 macros were created to locate files known to be included in the distribution of libraries depended upon.
== History ==
The first program to come with a configure script was [[rn (newsreader)|rn]] by [[Larry Wall]] in 1984. The script was written by hand and produced a jocular running commentary when executed. It still survives as part of the build system of the '''trn''' program.{{Citation needed|date=January 2016}}
Since then, an ecosystem of programs has grown up to automate the creation of configure scripts as far as possible, of which the most common is the [[Autoconf|GNU Autoconf]] system.
== See also ==
* [[Autoconf]]
* [[Software build]]
* [[GNU Build System]]
== References ==
{{Reflist}}
[[Category:Compiling tools]]
[[Category:Linux configuration utilities]]
[[Category:Unix programming tools]]
[[Category:Build automation|configure]]
|