<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <link rel="STYLESHEET" href="ext.css" type='text/css' /> <link rel="SHORTCUT ICON" href="../icons/pyfav.gif" /> <link rel='start' href='../index.html' title='Python Documentation Index' /> <link rel="first" href="ext.html" title='Extending and Embedding the Python Interpreter' /> <link rel='contents' href='contents.html' title="Contents" /> <link rel='last' href='about.html' title='About this document...' /> <link rel='help' href='about.html' title='About this document...' /> <LINK rel="next" href="callingPython.html"> <LINK rel="prev" href="methodTable.html"> <LINK rel="parent" href="intro.html"> <LINK rel="next" href="callingPython.html"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta name='aesop' content='information' /> <META name="description" content="Compilation and Linkage "> <META name="keywords" content="ext"> <META name="resource-type" content="document"> <META name="distribution" content="global"> <title>1.5 Compilation and Linkage </title> </head> <body> <DIV CLASS="navigation"> <div id='top-navigation-panel'> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td class='online-navigation'><a rel="prev" title="1.4 The Module's Method" href="methodTable.html"><img src='../icons/previous.png' border='0' height='32' alt='Previous Page' width='32' /></A></td> <td class='online-navigation'><a rel="parent" title="1. Extending Python with" href="intro.html"><img src='../icons/up.png' border='0' height='32' alt='Up One Level' width='32' /></A></td> <td class='online-navigation'><a rel="next" title="1.6 Calling Python Functions" href="callingPython.html"><img src='../icons/next.png' border='0' height='32' alt='Next Page' width='32' /></A></td> <td align="center" width="100%">Extending and Embedding the Python Interpreter</td> <td class='online-navigation'><a rel="contents" title="Table of Contents" href="contents.html"><img src='../icons/contents.png' border='0' height='32' alt='Contents' width='32' /></A></td> <td class='online-navigation'><img src='../icons/blank.png' border='0' height='32' alt='' width='32' /></td> <td class='online-navigation'><img src='../icons/blank.png' border='0' height='32' alt='' width='32' /></td> </tr></table> <div class='online-navigation'> <b class="navlabel">Previous:</b> <a class="sectref" rel="prev" href="methodTable.html">1.4 The Module's Method</A> <b class="navlabel">Up:</b> <a class="sectref" rel="parent" href="intro.html">1. Extending Python with</A> <b class="navlabel">Next:</b> <a class="sectref" rel="next" href="callingPython.html">1.6 Calling Python Functions</A> </div> <hr /></div> </DIV> <!--End of Navigation Panel--> <H1><A NAME="SECTION003500000000000000000"><!--x--></A><A NAME="compilation"><!--z--></A> <BR> 1.5 Compilation and Linkage </H1> <P> There are two more things to do before you can use your new extension: compiling and linking it with the Python system. If you use dynamic loading, the details may depend on the style of dynamic loading your system uses; see the chapters about building extension modules (chapter <A href="building.html#building">3</A>) and additional information that pertains only to building on Windows (chapter <A href="building-on-windows.html#building-on-windows">4</A>) for more information about this. <P> If you can't use dynamic loading, or if you want to make your module a permanent part of the Python interpreter, you will have to change the configuration setup and rebuild the interpreter. Luckily, this is very simple on <font style="font-variant: small-caps;">Unix</font>: just place your file (<span class="file">spammodule.c</span> for example) in the <span class="file">Modules/</span> directory of an unpacked source distribution, add a line to the file <span class="file">Modules/Setup.local</span> describing your file: <P> <div class="verbatim"><pre> spam spammodule.o </pre></div> <P> and rebuild the interpreter by running <b class="program">make</b> in the toplevel directory. You can also run <b class="program">make</b> in the <span class="file">Modules/</span> subdirectory, but then you must first rebuild <span class="file">Makefile</span> there by running `<b class="program">make</b> Makefile'. (This is necessary each time you change the <span class="file">Setup</span> file.) <P> If your module requires additional libraries to link with, these can be listed on the line in the configuration file as well, for instance: <P> <div class="verbatim"><pre> spam spammodule.o -lX11 </pre></div> <P> <DIV CLASS="navigation"> <div class='online-navigation'><hr /> <table align="center" width="100%" cellpadding="0" cellspacing="2"> <tr> <td class='online-navigation'><a rel="prev" title="1.4 The Module's Method" rel="prev" title="1.4 The Module's Method" href="methodTable.html"><img src='../icons/previous.png' border='0' height='32' alt='Previous Page' width='32' /></A></td> <td class='online-navigation'><a rel="parent" title="1. Extending Python with" rel="parent" title="1. Extending Python with" href="intro.html"><img src='../icons/up.png' border='0' height='32' alt='Up One Level' width='32' /></A></td> <td class='online-navigation'><a rel="next" title="1.6 Calling Python Functions" rel="next" title="1.6 Calling Python Functions" href="callingPython.html"><img src='../icons/next.png' border='0' height='32' alt='Next Page' width='32' /></A></td> <td align="center" width="100%">Extending and Embedding the Python Interpreter</td> <td class='online-navigation'><a rel="contents" title="Table of Contents" rel="contents" title="Table of Contents" href="contents.html"><img src='../icons/contents.png' border='0' height='32' alt='Contents' width='32' /></A></td> <td class='online-navigation'><img src='../icons/blank.png' border='0' height='32' alt='' width='32' /></td> <td class='online-navigation'><img src='../icons/blank.png' border='0' height='32' alt='' width='32' /></td> </tr></table> <div class='online-navigation'> <b class="navlabel">Previous:</b> <a class="sectref" rel="prev" href="methodTable.html">1.4 The Module's Method</A> <b class="navlabel">Up:</b> <a class="sectref" rel="parent" href="intro.html">1. Extending Python with</A> <b class="navlabel">Next:</b> <a class="sectref" rel="next" href="callingPython.html">1.6 Calling Python Functions</A> </div> </div> <hr /> <span class="release-info">Release 2.3.4, documentation updated on May 20, 2004.</span> </DIV> <!--End of Navigation Panel--> <ADDRESS> See <i><a href="about.html">About this document...</a></i> for information on suggesting changes. </ADDRESS> </BODY> </HTML>