<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Configuring NetBeans IDE 7.4 for C/C++/Fortran</title>


<meta name="DESCRIPTION" content="Configuring the NetBeans IDE for C/C++/Fortran - NetBeans IDE 7.3">
<link rel="stylesheet" type="text/css" href="../../../netbeans.css">

</head>
<body>
<a name="top"></a>

<h1>Configuring NetBeans IDE 7.4 for C/C++/Fortran</h1>
<!-- START INTRO +++++++ -->
<div class="articledate" style="margin-left: 0px;font-style:italic;"><em>October 2013</em> [Revision number: V7.4-1]</div>

<p>This document provides
information about downloading, installing, and configuring C/C++ support in the
NetBeans IDE.  Before you can develop in C/C++, the NetBeans IDE requires the
C/C++ plugin module, and third party C/C++ compilers, <code>make</code> utilities, and
debuggers.
</p>

<!-- END INTRO -->
<h3>Contents</h3>
<img src="../../../images_www/articles/74/netbeans-stamp.png" class="stamp" alt="Content on this page applies to NetBeans IDE 7.4" title="Content on this page applies to the NetBeans IDE 7.4">
    <ul class="toc">
        <li><a href="#downloading" title="Enabling C/C++/Fortran in the IDE">
            Enabling C/C++/Fortran in the IDE</a></li>
        <li><a href="#compilers" title="Installing and Setting Up the Compilers">Installing and Setting Up the Compilers and Tools</a>
		<ul>
		<li><a href="#compilers_windows" title="Windows Platform">Microsoft Windows</a></li>
		<li><a href="#compilers_solaris" title="Solaris Platform">Oracle Solaris</a></li>
		<li><a href="#compilers_linux" title="Linux Platforms">Linux</a></li>
		<li><a href="#compilers_mac" title="Mac OS X Platform">Macintosh OS X</a></li></ul></li>
        <li><a href="#verifying" title="Verifying the Installation">Verifying the
      Installation</a></li>
      <li><a href="#ts" title="Troubleshooting Tool Issues">Troubleshooting Tool Issues</a></li>
	  <li><a href="#seealso" title="See Also">See Also</a></li>

    </ul>


 <p><b>To follow this tutorial, you need the following software and resources.</b></p>

    <table>
        <tbody>

            <tr>
                <th class="tblheader" scope="col">Software or Resource</th>
                <th class="tblheader" scope="col">Version Required</th>
            </tr>
           <tr>
<td class="tbltd1"><a href="http://www.netbeans.org/downloads/index.html">NetBeans IDE</a></td>
<td class="tbltd1">7.4 with NetBeans C/C++ plugin</td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">Java Developer Kit (JDK)</a></td>
<td class="tbltd1">7 and higher</td>
</tr>
        </tbody>
</table>



<br>
<!-- DOWNLOADING ---------------------------------------------------------->
<h2><a name="downloading">Enabling C/C++/Fortran in the IDE</a></h2>
<p>
The NetBeans IDE is a dynamic modular IDE, which means you can change it by
adding and removing modules of the program. You can add functionality by
installing plugin modules, or remove functionality by uninstalling plugin modules.
See the NetBeans IDE online help for more information about plugins.</p>
<p>
If you want to work with C, C++, or Fortran programs in the NetBeans IDE,
your NetBeans installation must include the C/C++ plugin.</p>
<p class="tips">Although the plugin is named C/C++, it also includes support for Fortran
programming.</p>

<div class="indent">
<h3>If you have not yet installed NetBeans IDE 7.4</h3>
<p>If you have not yet
installed the NetBeans IDE, download either the <b>C/C++</b> bundle or the
<b>All</b> bundle from  <a href="http://netbeans.org/downloads/index.html">NetBeans IDE
7.4 Download Page</a>. If you will not be using other languages such as Java and Ruby,
you should download the C/C++ bundle.</p>

<h3>If you have NetBeans IDE 7.4 but do not know if you have the C/C++ plugin</h3>
<p>If you already have NetBeans IDE, determine if your NetBeans IDE includes the
C/C++ plugin already by selecting File &gt; New Project.
If C/C++ is listed as one of the Categories, you have the C/C++ plugin module.
You should skip to the section <a href="#compilers">Installing and Setting Up the Compilers and Tools</a>.
</p>

<h3>If you have NetBeans IDE 7.4 without the C/C++ plugin</h3>
<p>If your NetBeans IDE does not show a C/C++ project category when you select
 File &gt; New Project, complete the
following steps to add the C/C++ plugin module to the IDE.</p>
<ol>
    <li>If your network uses a proxy, choose Tools &gt; Options &gt; General in the IDE,
        select Manual Proxy Settings, enter the HTTP Proxy and Port for
    your proxy, and click OK.</li>
    <li>Choose Tools &gt; Plugins.</li>

    <li>In the Plugins dialog box, click the Available Plugins tab,
        and scroll to the C/C++ category.
    </li>
    <li>Select the C/C++ checkbox and click Install to start the NetBeans IDE Installer.</li>
    <li>In the NetBeans IDE Installer, click Next.</li>
    <li>Read the license agreement, select the checkbox to accept the terms
    of the license agreement, and click Next.</li>
    <li>Click Install.</li>
    <li>After the installation completes, select either Restart IDE Now or Restart
    IDE Later and click Finish.</li>
</ol>
</div>
 
       
        
<!-- COMPILER SETUP ------------------------------------------------------->
<h2><a name="compilers">Installing and Setting Up the Compilers and Tools</a></h2>
<p>The Netbeans C/C++ module requires a C compiler, C++ compiler,
<tt>make</tt> utility, and <tt>gdb</tt> debugger.  See the following instructions for
the platform of your development system.
</p>
<table class="b-none vatop" cellpadding="0" cellspacing="0">
<tr>
      <td class="hyphen">-&nbsp;</td>
      <td><a href="#compilers_windows" title="Windows Platform">Microsoft Windows</a></td>
</tr>
   <tr>
      <td class="hyphen">-&nbsp;</td>
      <td><a href="#compilers_solaris" title="Solaris Platform">Oracle Solaris</a></td>
   </tr>
   <tr>
      <td class="hyphen">-&nbsp;</td>
      <td><a href="#compilers_linux" title="Linux Platforms">Linux</a></td>
   </tr>
    <tr>
      <td class="hyphen">-&nbsp;</td>
      <td><a href="#compilers_mac" title="Macintosh OS X">Macintosh OS X</a></td>
   </tr>
   
</table>



<!-- COMPILER SETUP: WINDOWS ++++++++ -->
<!--<blockquote>-->
<div class="indent">
<h3><a name="compilers_windows"></a>Microsoft Windows</h3>
<p>The NetBeans C/C++ module has been tested with compilers from Cygwin and
MinGW. If you install both Cygwin and MinGW, be careful to keep their installation
locations completely separate and do not mix tools from Cygwin and MinGW in
one tool collection in the IDE.</p>
<p class="notes"><strong>Note.</strong> If you want to use Qt with Windows, you must use MinGW. See 
    the article <a href="../../../kb/docs/cnd/qt-applications.html">Working with Qt Applications</a> for instructions
for installing MinGW and Qt software.</p>

<table class="b-none vatop" cellpadding="0" cellspacing="0">
<tr>
      <td class="hyphen">-&nbsp;</td>
      <td><a href="#cygwin" title="Cygwin Compilers and Tools">Cygwin Compilers and Tools</a></td>
</tr>
   <tr>
      <td class="hyphen">-&nbsp;</td>
      <td><a href="#mingw" title="MinGW Compilers and Tools">MinGW Compilers and Tools</a></td>
   </tr>
</table>

<h4><a name="cygwin"></a>Cygwin Compilers and Tools</h4>

<p>The NetBeans C/C++ module has been tested with the following compilers
and tools from <a href="http://cygwin.com/" target="_blank">Cygwin.com</a>.</p>

<table>
  <tbody>

           <tr>
                <th class="tblheader" scope="col">Software or Resource</th>
                <th class="tblheader" scope="col">Version Tested</th>
                <th class="tblheader" scope="col">Description</th>
    </tr>
            <tr>
                <td class="tbltd1"><tt>cygwin1.dll</tt></td>
                <td class="tbltd1">1.7.7, 1.7.9 </td>
                <td class="tbltd1">Cygwin Linux-like environment for Windows</td>

            </tr>
        
        <tr>
            <td class="tbltd1"><tt>gcc</tt></td>
            <td class="tbltd1">4.3.4</td>
            <td class="tbltd1">Cygwin C compiler</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>g++</tt></td>
            <td class="tbltd1">4.3.4</td>
            <td class="tbltd1">Cygwin C++ compiler</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gdb</tt></td>
            <td class="tbltd1">6.8</td>
            <td class="tbltd1">Cygwin GNU debugger</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>make</tt></td>
            <td class="tbltd1">3.81</td>
            <td class="tbltd1">Cygwin make utility</td>

        </tr>
  </tbody>
</table>
<br>
<p>If you already have the Cygwin gcc and g++ compilers, GNU <tt>make</tt>, and
<tt>gdb</tt> debugger installed on your Windows system and
your path is set up correctly to find them, make sure that you have the
correct versions.
</p>

<p><b>To check the versions of your Cygwin compilers and tools:</b></p>
<ol>
<li>
<p>Check the version of Cygwin environment by typing the following commands at a Windows command prompt:</p>
<pre class="examplecode">C:\&gt; cygcheck -c cygwin</pre>
</li>
<li>Check the versions of the Cygwin gcc and g++ compilers, <tt>make</tt>, and <tt>gdb</tt> by
typing the following commands at a Windows command prompt:
<pre class="examplecode">C:\&gt; gcc --version
C:\&gt; g++ --version
C:\&gt; make --version
C:\&gt; gdb --version
</pre>
</li>
</ol>
<p>
 If you have the correct versions, then no further setup is
necessary. See <a href="#verifying">Verifying the Installation</a> to verify that
the tools are installed correctly for the NetBeans IDE.</p>

<p><b>To install the GNU gcc and g++ compilers, <tt>make</tt>, and <tt>gdb</tt> debugger from
<a href="http://cygwin.com/" target="blank">cygwin.com</a>:</b></p>
<ol>
    <li>Refer to the <a href="http://cygwin.com/cygwin-ug-net/index.html" target="_blank">Cygwin User's Guide</a> for
    complete information about installing and using Cygwin.</li>
<li>Download the Cygwin <tt>setup-x86.exe</tt> (32-bit installation) or <tt>setup-x86_64.exe</tt> (64-bit installation) program by clicking Install Cygwin in the left navigation bar, or by clicking the direct
    <a href="http://www.cygwin.com/setup-x86.exe">
	<tt>setup-x86.exe</tt></a> or <a href="http://www.cygwin.com/setup-x86_64.exe">
	<tt>setup-x86_64.exe</tt></a> link.
	<p class="notes"><b>Note:</b> The bitness of Windows OS, Java, and NetBeans IDE installed on your machine must match. For example, if you are running the 64-bit version of Windows operating system, 64-bit Java and 64-bit Cygwin (that is <tt>setup-x86_64.exe</tt>) are required to be installed. 
	  See <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=234221#c6">issue 234221</a> for details.</p>
  </li>

	 <li>
	Run the downloaded Cygwin installer. Accept the defaults until you reach
	the Select Your Internet Connection page. Select the option on this
	page that is best for you. Click Next.
   </li>
    <li>
	On the Choose Download Site page, choose a download site you think
	might be relatively close to you. Click Next.
    </li>
    <li>
	On the Select Packages page you select the packages to download. Click 
	the + next to Devel to expand the development tools category. You may 
	want to resize the window so you can see more of it at one time.
    </li>
    <li>
	Select each package you want to download by clicking the Skip label
	next to it, which reveals the version number of the package to download.
        At a minimum, select
        <ul><li>gcc-core: C compiler
            </li>
            <li>gcc-g++: C++ compiler
            </li>
            <li>gdb: The GNU Debugger
            </li>
            <li>make: the GNU version of the 'make' utility
            </li>
        </ul>
	Packages that are required by the packages you
    select are automatically selected as well.
	</li>
    <li>Click Next to connect to the download site and download the packages you
    selected, and click Finish when the installation is complete.</li>
    <li>
        Now add the Cygwin compiler directory to your path to enable NetBeans IDE
        to find the tools collection:
       <br><br>
        <ol type="a">
        <li>Open the Control Panel:<br>
            - On Windows XP select Start &gt; Settings &gt; Control Panel and
            double-click System. <br>
            - On Windows 7, type <b>var</b> in the Start menu's
        search box to quickly find a link to Edit the system environment variables.</li>
        <li>Select the Advanced tab and click Environment Variables.</li>
        <li>In the System Variables panel of the Environment Variables dialog, 
        select the <tt>Path</tt> variable and
        click Edit.</li>
        <li>Add the path to the
        <tt><i>cygwin-directory</i>\bin</tt> directory to the <tt>Path</tt> variable, and
        click OK. By default, <tt><i>cygwin-directory</i></tt> is 
        <tt>C:\cygwin</tt> (for 32 bit Cygwin distribution) or <tt>C:\cygwin64</tt> (for 64 bit Cygwin distribution). Directory names must be separated with a semicolon.
        Your edited path should look something like
        <tt>%SystemRoot%\system32;%SystemRoot%;C:\Program Files\QuickTime\QTSystem;C:\cygwin\bin</tt></li>
        <li>Click OK in the Environment Variables dialog and the System 
        Properties dialog.
        </li>
        <li>See <a href="#verifying">Verifying the Installation</a> to verify that the tools were installed correctly
for the NetBeans IDE.</li>
        </ol>
	
    </li>
</ol>

    <!-- MinGW installation -->

        <h4><a name="mingw"></a>MinGW Compilers and Tools</h4>
        <p>NetBeans IDE 7.4 was tested with Minimalist GNU for Windows (MinGW) and the Minimal System (MSYS)
        Unix-like environment. Versions tested and installation instructions are shown below.</p>

        <p class="notes margin-around"><strong>Note.</strong> If you want to use Qt with Windows, see 
    the article <a href="../../../kb/docs/cnd/qt-applications.html">Working with Qt Applications</a> for instructions
for installing MinGW and Qt software.</p>
 
        <table>
  <tbody>

           <tr>
                <th class="tblheader" scope="col">Software or Resource</th>
                <th class="tblheader" scope="col">Version Tested</th>
                <th class="tblheader" scope="col">Description</th>
    </tr>


        <tr>
            <td class="tbltd1"><tt>gcc</tt></td>
            <td class="tbltd1">4.6.2</td>
            <td class="tbltd1">C compiler</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>g++</tt></td>
            <td class="tbltd1">4.6.2</td>
            <td class="tbltd1">MinGW C++ compiler</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gdb</tt></td>
            <td class="tbltd1">7.4</td>
            <td class="tbltd1">MinGW GNU debugger</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>make</tt></td>
            <td class="tbltd1">3.81</td>
            <td class="tbltd1">MSYS <tt>make</tt> utility<br>
                Note that MinGW make is not supported</td>

        </tr>
    </tbody>
</table>
<br>
<p><b>To install the GNU compilers, <tt>make</tt>, and <tt>gdb</tt> debugger from
<a href="http://mingw.org" target="_blank">mingw.org</a>:</b></p>
<ol>
    <li>Log in to Windows using an account with computer administrator privileges.
    </li>
      <li>Download the MinGW installer from 
        <a href="http://sourceforge.net/projects/mingw">http://sourceforge.net/projects/mingw</a>.</li>
    <li>Run the MinGW installer, which should have a file name similar to <tt>mingw-get-inst-20120426.exe</tt>.</li>
      <li>Accept the default <tt>C:\MinGW</tt> as the destination folder if possible to minimize any potential difficulty with using
        the compilers from another location.</li>
      <li>In the MinGW installer select the following components to install:
        <ul>
            <li>C</li>
            <li>C++</li>
            <li>Fortran  <em>(if you will be working on Fortran programs)</em></li>
            <li>MSYS Basic System</li>
            <li>MinGW Developer Toolkit</li>
        </ul></li>
        <li>Click Install and wait a few minutes while the installer program downloads the components you selected. </li>
        <li>Click Finish when the packages are finished downloading.</li>
  </ol>
<p>You must add the paths to the the binaries for MinGW and MSYS tools to your PATH.  If you installed to the default location the paths are 
        <tt>C:\MinGW\bin</tt> and <tt>C:\MinGW\MSYS\1.0\bin</tt>.</p>
<p><b>To edit your PATH environment variable in Windows:</b></p>
       
        <ol>        
            <li>Open the Environment Variables window: 
                <ul>
            <li>On Windows XP and Windows 2000:  Right-click My Computer &gt; Properties &gt; Advanced tab &gt; 
                 Environment Variables button.</li>
                 <li>On Windows Vista and Windows 7:  Right-click My Computer &gt;  Properties &gt;  
                Advanced System Settings link &gt; Environment Variables button.</li></ul></li>
            <li>In the Environment Variables window, select the Path variable in the Systems Variable 
                section and click Edit.</li>
            <li>At the end of the path, insert a semi-colon and add the paths to the executables for 
                MinGW and MSYS. Use semi-colons between the paths and do not use any spaces.
                Be careful not to remove anything already on your PATH or your computer might not work correctly. <br>
           <p>When you are finished, your path should look similar to the following:</p>
           <pre>%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;C:\MinGW\bin;C:\MinGW\MSYS\1.0\bin</pre>
            </li>            
            <li>Click OK in the Environment Variables window.</li>
  </ol>

<p>See <a href="#verifying">Verifying the Installation</a> to verify that the tools were installed correctly
for the NetBeans IDE.</p

><!-- COMPILER SETUP: SOLARIS OS -------------------------------->
<h3><a name="compilers_solaris"></a>Oracle Solaris</h3>
<p>
   On Oracle Solaris platforms, you can use GNU tools or Oracle Solaris Studio tools. The GNU
    tools are included in Oracle Solaris 11 in the <tt>/usr/sfw/bin</tt> directory by default.
    The Oracle Solaris Studio software is a suite of developer tools that are free to download.
    The Oracle Solaris Studio compilers are optimized for Oracle Sun hardware, and make it
    easier to produce performance tuned Oracle Solaris binaries.</p>
    
     <p>NetBeans IDE 7.4 has been tested with the following compilers and tools.</p>

     <table>
  <tbody>

           <tr>
                <th class="tblheader" scope="col">Software or Resource</th>
                <th class="tblheader" scope="col">Version Tested</th>
                <th class="tblheader" scope="col">Description</th>
    </tr>
            <tr>
                <td class="tbltd1"><tt>cc</tt></td>
                <td class="tbltd1">5.10, 5.11, 5.12 </td>
                <td class="tbltd1">Sun Studio 12 Update 1,  Oracle Solaris Studio 12.2, and Oracle Solaris Studio 12.3 C compilers</td>

            </tr>
            <tr>
                <td class="tbltd1"><tt>CC</tt></td>
                <td class="tbltd1">5.10, 5.11, 5.12 </td>
                <td class="tbltd1">Sun Studio 12 Update 1,  Oracle Solaris Studio 12.2, and Oracle Solaris Studio 12.3 C++ compilers</td>

            </tr>

        <tr>
            <td class="tbltd1"><tt>gcc</tt></td>
            <td class="tbltd1">3.4.3, 3.4.6</td>
            <td class="tbltd1">GNU C compilers</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>g++</tt></td>
            <td class="tbltd1">3.4.3, 3.4.6 </td>
            <td class="tbltd1">GNU C++ compilers</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gdb</tt></td>
            <td class="tbltd1">6.8</td>
            <td class="tbltd1">GNU debugger</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gmake</tt></td>
            <td class="tbltd1">3.81</td>
            <td class="tbltd1">GNU make</td>

        </tr>
         <tr>
            <td class="tbltd1"><tt>make</tt></td>
            <td class="tbltd1">3.81</td>
            <td class="tbltd1">Solaris make</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>dmake</tt></td>
            <td class="tbltd1">7.9, 8.0, 8.1 </td>
            <td class="tbltd1">Sun Studio 12 Update 1,  Oracle Solaris Studio 12.2, and Oracle Solaris Studio 12.3 distributed make utility</td>

        </tr>
    </tbody>
</table>
<h4>Oracle Solaris Studio 12.3 Compilers</h4>
<p>If you want to use the Oracle Solaris Studio 12.3 compilers on  Oracle Solaris 11:</p>
<ul>
<li>If you
have Oracle Solaris Studio 12.3 software installed, ensure that <tt>/<i>installation
directory</i>/solarisstudio12.3/bin</tt>
is in your path before you start the NetBeans IDE. The default location on
Solaris 11 is <tt>/opt/solarisstudio12.3/bin</tt></li>
<li>
If you do not have Oracle Solaris Studio 12.3 software installed, you can
download it free at <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-141149.html" target="_blank">
    <tt>http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-141149.html</tt></a>.</li>
</ul>

<p><b>To download and install the Oracle Solaris Studio 12.3 compilers on 
 Oracle Solaris 11:</b></p>
<ol>

<li>Create a directory for the downloaded file.
You must have write permission for this directory.</li>
<li>
Download the package installer file for your platform into the download directory.
</li>
<li>Go to the download directory, and uncompress and untar the downloaded file.
<pre>bzcat <i>filename</i> | /bin/tar xvf -
</pre>
</li>
<li>Follow the instructions in Chapter 2 of the <a href="http://docs.oracle.com/cd/E24457_01/html/E21988/index.html" target="_blank"><i>Oracle Solaris Studio 12.3 Installation Guide</i></a> to install the C compiler, C++ compiler,
and required Solaris patches.</li>
<li>Edit your <tt>PATH</tt> to add the path to the Oracle Solaris Studio 12.3 software before
starting the NetBeans IDE.</li>
<li>See <a href="#verifying">Verifying the Installation</a> to verify that the tools were installed correctly
for the NetBeans IDE.</li>
</ol>
<p><b>To install the Oracle Solaris Studio 12.3 compilers on Oracle Solaris 11:</b></p>
<ul>
<li>Go to the <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-141149.html" target="blank">Oracle Solaris Studio download page</a> and follow the instructions for Oracle Solaris 11 in the Package Installation column.
</li>
</ul>

<h4>GNU Compilers and GNU <tt>make</tt></h4>
<p>If you want to use the GNU compilers and GNU <tt>make</tt>:</p>
<ul>
<li>If you have a standard installation of Oracle Solaris 11, the compilers and
<tt>gmake</tt> are installed in <tt>/usr/sfw/bin</tt>. Make sure that this
location is in your <tt>PATH</tt> before starting NetBeans IDE.</li>
<li>If the compilers and <tt>gmake</tt> are not installed on your system, you can download them from
<a href="http://pkg.oracle.com/solaris/release/en/index.shtml" target="_blank">http://pkg.oracle.com</a>.</li>
</ul> 

<p><b>To download and install the GNU compilers and make utility:</b></p>
<ol>
<li>Download and install the packages with the <tt>pkg install</tt> command by typing <tt>pkg install gcc-3 gnu-make</tt> in the command prompt. </li>
<li>Make sure to include the GNU
compiler directory and the GNU make directory in your path before starting the NetBeans IDE.
</li>
 <li>See <a href="#verifying">Verifying the Installation</a> to verify that the tools were installed correctly
for the NetBeans IDE.</li>
</ol>


<h4><tt>gdb</tt> Debugger</h4>
<p>Whether you use the Oracle Solaris Studio compilers and Solaris <tt>make</tt> or the
GNU compilers and GNU <tt>make</tt>, you must have the <tt>gdb</tt> debugger to
debug applications in NetBeans IDE. You can download <tt>gdb</tt> from
<a href="http://pkg.oracle.com/solaris/release/en/index.shtml" target="_blank">http://pkg.oracle.com</a>.
</p>
<p><b>To download and install <tt>gdb</tt> for Oracle Solaris 11:</b></p>
<ol>

<li>Download and install the package with the <tt>pkg install</tt> command by typing <tt>pkg install gdb </tt> in the command prompt. </li>
<li>Make sure to include the path to <tt>gdb</tt> in your <tt>PATH</tt> before starting
NetBeans IDE.</li>
<li>See <a href="#verifying">Verifying the Installation</a> to verify that the tools were installed correctly
for NetBeans IDE.</li>
</ol>
    


<!-- COMPILER SETUP: LINUX OS +++++++++++++++++++++++++ -->
<h3><a name="compilers_linux"></a>Linux</h3>
<p>On Linux platforms, you can use GNU tools or Oracle Solaris Studio tools.</p>
<p>NetBeans IDE has been tested with the following compilers and tools:</p>


<table>
  <tbody>

           <tr>
                <th class="tblheader" scope="col">Software or Resource</th>
                <th class="tblheader" scope="col">Version Tested</th>
                <th class="tblheader" scope="col">Description</th>
    </tr>
            <tr>
                <td class="tbltd1"><tt>cc</tt></td>
                <td class="tbltd1"> 5.10, 5.11, 5.12 </td>
                <td class="tbltd1">Sun Studio 12 Update 1,  Oracle Solaris Studio 12.2, and Oracle Solaris Studio 12.3 compilers</td>

            </tr>
            <tr>
                <td class="tbltd1"><tt>CC</tt></td>
                <td class="tbltd1"> 5.10, 5.11, 5.12 </td>
                <td class="tbltd1">Sun Studio 12 Update 1,  Oracle Solaris Studio 12.2, and Oracle Solaris Studio 12.3 compilers</td>

            </tr>

        <tr>
            <td class="tbltd1"><tt>gcc</tt></td>
            <td class="tbltd1">4.6.3 and 4.7.2</td>
            <td class="tbltd1">GNU C compiler</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>g++</tt></td>
             <td class="tbltd1">4.6.3 and 4.7.2</td>
            <td class="tbltd1">GNU C++ compiler</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gdb</tt></td>
            <td class="tbltd1">7.4 and 7.5 </td>
            <td class="tbltd1">GNU debugger</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gmake</tt></td>
            <td class="tbltd1">3.81</td>
            <td class="tbltd1">GNU make</td>

        </tr>
		<tr>
            <td class="tbltd1"><tt>dmake</tt></td>
            <td class="tbltd1">7.9, 8.0, 8.1</td>
            <td class="tbltd1">Sun Studio 12 Update 1,  Oracle Solaris Studio 12.2, and Oracle Solaris Studio 12.3 distributed make utility</td>

        </tr>
       
  </tbody>
</table>
<br><br>
    
    <h4>Oracle Solaris Studio 12.2 Compilers on Linux</h4>
<p>If you want to use the Oracle Solaris Studio 12.3 compilers in a Linux OS:</p>
<ul>
<li>If you have Oracle Solaris Studio 12.3 software installed, ensure that <tt>/<i>installation
directory</i>/solarisstudio12.3/bin</tt>
is in your path before you start NetBeans IDE. The default location
is <tt>/opt/oracle/solarisstudio12.3/bin</tt> when installing with Linux packages.</li>
<li>
If you do not have Oracle Solaris Studio 12.3 software installed, you can
download it free at <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-141149.html" target="_blank">
<tt>http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-141149.html</tt></a>.
</li>
</ul>

<p><b>To download and install the Oracle Solaris Studio 12.3 compilers:</b></p>
<ol>

<li>Create a directory for the downloaded file.
You must have write permission for this directory.</li>
<li>If your browser is set to download to a particular location such as your Desktop or a Downloads directory without prompting,
set the browser preferences to download to the
directory you created.  For Firefox, the download directory is set in Edit &gt; Preferences &gt; Main.</li>

<li>Download the file
for your platform into the download directory you created. If you are using Ubuntu,
download the tarfile installation into the directory where you want to install it because the packages are for Oracle Linux, Red Hat Enterprise Linux, and SuSE Linux Enterprise System.  Note also
that Ubuntu is not an officially supported platform for Oracle Solaris Studio IDE, but the compilers
have been tested for use in NetBeans IDE and been found to work.
</li>
<li>Go to the download directory, and uncompress and untar the downloaded file.
<pre>bzcat <i>filename</i> | tar xvf -
</pre>
</li>
<li>
If you downloaded the RPM packages, follow the instructions in Chapter 2 of the <a href="http://download.oracle.com/docs/cd/E18659_01/html/821-1385/index.html" target="_blank"><i>Oracle Solaris Studio 12.3 Installation Guide</i></a> to install the C compiler, C++ compiler, and Fortran compiler.</li>


<li>Edit your <tt>PATH</tt> to add the path to the Oracle Solaris Studio software before
starting NetBeans IDE.</li>
 <li>See <a href="#verifying">Verifying the Installation</a> to verify that the tools were installed correctly
for NetBeans IDE.</li>
</ol>
<p><b>To download and install the GNU debugger in Oracle Linux or Red Hat Enterprise Linux, type:</b></p>
<pre>yum install gdb</pre>

<p><b>To download and install the GNU debugger in Ubuntu, type:</b></p>
<pre>sudo apt-get install gdb</pre>


<!-- COMPILER SETUP: MAC OS X ---------------------------------->
<h3><a name="compilers_mac"></a>OS X</h3>

<p>
NetBeans IDE has been tested with the following compilers
and tools:</p>

<table>
  <tbody>

           <tr>
                <th class="tblheader" scope="col">Software or Resource</th>
                <th class="tblheader" scope="col">Version Tested</th>
                <th class="tblheader" scope="col">Description</th>
    </tr>


        <tr>
            <td class="tbltd1"><tt>gcc</tt></td>
            <td class="tbltd1">4.2.1</td>
            <td class="tbltd1">GNU C compiler in Mac OS X 10.7</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>g++</tt></td>
            <td class="tbltd1">4.2.1</td>
            <td class="tbltd1">GNU C++ compiler in Mac OS X 10.7</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>gdb</tt></td>
            <td class="tbltd1">6.3.5</td>
            <td class="tbltd1">GNU debugger in Mac OS X 10.7</td>

        </tr>
        <tr>
            <td class="tbltd1"><tt>make</tt></td>
            <td class="tbltd1">3.81</td>
            <td class="tbltd1">GNU make in Mac OS X 10.7</td>

        </tr>

  </tbody>
</table>

<br>
<p>Install the following packages that are provided with your OS X:</p>
<ul>
<li>Xcode
<p class="notes"><b>Note:</b> Xcode 5 contains no <tt>gcc</tt>, <tt>g++</tt>, or <tt>gdb</tt>. Use  older versions of Xcode.</p>
</li>
<li>X11</li>
</ul>
<p>These packages can also be downloaded from
<a href="http://developer.apple.com/mac" target="_blank">Apple Developer Connection</a> with
the free ADC membership.</p>

</div>

<br><!-- VERIFYING THE INSTALLATION ------------------------------------------>
<h2><a name="verifying">Verifying the Installation</a></h2>
<p>To verify that the installation is correct, start NetBeans IDE, 
build a sample project, and run it in the <tt>gdb</tt> debugger.</p>

<div class="indent">
<h3><a name="start">Start NetBeans IDE</a></h3>
<p><b>To start the IDE, do one of the following:</b></p>
<ul>
<li>Double-click the NetBeans IDE icon on the desktop.</li>
<li>On Linux or Solaris platforms, navigate to the <tt>bin</tt> subdirectory of your NetBeans installation and
type <tt>./netbeans</tt>.
</li>
<li>Launch NetBeans IDE through the desktop menu.
<br>
This method is available on Windows platforms, but might not be available
on the Oracle Solaris 11 platform and some Linux platforms.</li>
</ul>

<h3><a name="test"></a>Build a Sample Project to Test the Tools</h3>
<p>On all platforms, you can build a sample project to test the compiler installation,
and run it in the debugger to test the gdb installation.</p>
<p><b>To build a sample project and run it in the debugger:</b></p>
<ol>
<li>Open the New Project wizard by choosing File &gt; New Project.</li>
<li>In the Categories panel on the Choose Project page of the wizard, expand
the Samples category and select the C/C++ subcategory.</li>
<li>In the Projects panel, select the <tt>Welcome</tt> project. Click Next.
</li>
<li>On the Project Name and Location page, click Finish.
</li>
<li>In the Projects window, right-click the <tt>Welcome_1</tt> project and
choose Build. If your compilers and <tt>make</tt> utility are
installed correctly and the path to them is set, build output is displayed in
the Output window and the project builds successfully.
</li>
<li>Expand the Source Files node of the project and double-click the <tt>welcome.cc</tt> file to open it in the Source
Editor.</li>
<li>Set a breakpoint by clicking in the left margin of the Source
Editor window next to any line.
</li>
<li>Right-click the project and choose Debug. If the <tt>gdb</tt>
debugger is installed correctly and the path to it is set, <tt>gdb</tt> starts
up, the Debugger tabs are displayed, and the Welcome application 
runs and stops at the breakpoint.
</li>
<li>Choose Debug &gt; Continue to run the application to completion.
</li>
<li>If the project doesn't build or debugger doesn't work, see the next section.</li>
</ol>
</div>

<h2><a name="ts"></a>Troubleshooting Tool Issues</h2>
<ol>
    <li>Select Tools &gt; Options and click C/C++ in the top panel of the Options dialog box.</li>
    <li>In the Build Tools tab, look at the Tool Collection list to see if your
    tool collection is listed.</li>
    <li>Select the tool collection if it is listed, and check the paths to the tools.
    If the Base Directory path is incorrect, you may have made a mistake when setting
    your path environment variable. Refer back to the instructions for setting the path in the section for your platform
    in this document, and correct the path if necessary.</li>
    <li>If the tool collection is not listed, click Restore Defaults. This will
    cause the IDE to rescan your environment to look for tools and the tool collection
    should be found if the path environment variable is correct.</li>
    <li>If you are still having an issue, try adding a new tool collection and
    specifying the path to the tools, as follows:
    <ol type="a">
        <li>Click Add below the Tool Collection list.</li>
        <li>Browse to the directory that contains the executables for the compilers, debugger, and
        make utility. This is usually the <tt>bin</tt> directory.</li>
        <li>Select the directory and click Open. The IDE should be able to determine the family
        of the tools and update the other fields in the dialog box appropriately. If not, an error
        is displayed.</li>
        <li>If the tools are identified correctly, click OK in the Add Tool Collection dialog box.
            The new collection should be displayed in the list.</li>
        <li>Select the new tool collection and click Default to make sure this tool collection
        is used automatically for new projects.</li>
    </ol>
    <p class="tips">If you cannot solve the problem, ask for help at the
    <a href="http://forums.netbeans.org/cnd-users.html" target="_blank">NetBeans C/C++ User Forum</a>.</p>
    </li>
</ol>

<h2><a name="seealso"></a>See Also</h2>
   <ul>
   <li>See the <a href="../../../kb/docs/cnd/quickstart.html">C/C++
Projects Quick Start Tutorial</a> to learn quickly how to develop a C or C++ application with NetBeans
IDE.</li>
     <li>See the 
       <a href="https://netbeans.org/kb/trails/cnd.html">C/C++ Learning Trail</a> for
       more articles about developing with C/C++/Fortran in NetBeans IDE.</li>
	   <li>See the <a href="http://wiki.netbeans.org/HowToCreate64-BitC/C++WindowsProgramWithNetBeans">HowToCreate64-BitC/C++WindowsProgramWithNetBeans</a> wiki page for information on how to setup NetBeans IDE to create 64-bit C/C++ Windows executables.</li>
</ul>
<div class="feedback-box"><a href="mailto:users@cnd.netbeans.org?subject=Feedback:%20Configuring%20NetBeans%20IDE%207.4%20for%20C/C++/Fortran">Send Us Your Feedback</a></div>

</body>
</html>
