<!--{
    "Title": "Compile and install the application",
    "Path":  "/doc/tutorial/compile-install"
}-->

<p>
  In this last topic, you'll learn a couple new <code>go</code> commands. While
  the <code>go run</code> command is a useful shortcut for compiling and running
  a program when you're making frequent changes, it doesn't generate a binary
  executable.</p>

<p>
  This topic introduces two additional commands for building code:
</p>

<ul>
  <li>
    The <a href="/cmd/go/#hdr-Compile_packages_and_dependencies"><code>go
    build</code> command</a> compiles the packages, along with their dependencies,
    but it doesn't install the results.
  </li>
  <li>
    The <a href="/ref/mod#go-install"><code>go
    install</code> command</a> compiles and installs the packages.
  </li>
</ul>

<aside class="Note">
  <strong>Note:</strong> This topic is part of a multi-part tutorial that begins
  with <a href="create-module.html">Create a Go module</a>.
</aside>

<ol>
  <li>
    From the command line in the hello directory, run the <code>go build</code>
    command to compile the code into an executable.

    <pre>$ go build</pre>
  </li>

  <li>
    From the command line in the hello directory, run the new <code>hello</code>
    executable to confirm that the code works.

    <p>
      Note that your result might differ depending on whether you changed
      your greetings.go code after testing it.
    </p>

    <ul>
      <li>
        On Linux or Mac:

        <pre>
$ ./hello
map[Darrin:Great to see you, Darrin! Gladys:Hail, Gladys! Well met! Samantha:Hail, Samantha! Well met!]
</pre>
      </li>

      <li>
        On Windows:

        <pre>
$ hello.exe
map[Darrin:Great to see you, Darrin! Gladys:Hail, Gladys! Well met! Samantha:Hail, Samantha! Well met!]
</pre>
      </li>
    </ul>
    <p>
      You've compiled the application into an executable so you can run it.
      But to run it currently, your prompt needs either to be in the executable's
      directory, or to specify the executable's path.
    </p>
    <p>
      Next, you'll install the executable so you can run it without specifying
      its path.
    </p>
  </li>

  <li>
    Discover the Go install path, where the <code>go</code> command will install
    the current package.

    <p>
      You can discover the install path by running the
      <a href="/cmd/go/#hdr-List_packages_or_modules">
        <code>go list</code> command</a>, as in the following example:
    </p>

    <pre>
$ go list -f '{{.Target}}'
</pre>

    <p>
      For example, the command's output might say <code>/home/gopher/bin/hello</code>,
      meaning that binaries are installed to /home/gopher/bin. You'll need this
      install directory in the next step.
    </p>
  </li>

  <li>
    Add the Go install directory to your system's shell path.

    <p>
      That way, you'll be able to run your program's executable without
      specifying where the executable is.
    </p>

    <ul>
      <li>
        On Linux or Mac, run the following command:

        <pre>
$ export PATH=$PATH:/path/to/your/install/directory
</pre
        >
      </li>

      <li>
        On Windows, run the following command:

        <pre>
$ set PATH=%PATH%;C:\path\to\your\install\directory
</pre
        >
      </li>
    </ul>

    <p>
      As an alternative, if you already have a directory like
      <code>$HOME/bin</code> in your shell path and you'd like to install your
      Go programs there, you can change the install target by setting the
      <code>GOBIN</code> variable using the
      <a href="/cmd/go/#hdr-Print_Go_environment_information">
        <code>go env</code> command</a>:
    </p>

    <pre>
$ go env -w GOBIN=/path/to/your/bin
</pre>

    <p>
      or
    </p>

    <pre>
$ go env -w GOBIN=C:\path\to\your\bin
</pre
    >
  </li>

  <li>
    Once you've updated the shell path, run the <code>go install</code> command
    to compile and install the package.

    <pre>$ go install</pre>
  </li>

  <li>
    Run your application by simply typing its name. To make this interesting,
    open a new command prompt and run the <code>hello</code> executable name
    in some other directory.

    <pre>
$ hello
map[Darrin:Hail, Darrin! Well met! Gladys:Great to see you, Gladys! Samantha:Hail, Samantha! Well met!]
</pre
    >
  </li>
</ol>

<p>
  That wraps up this Go tutorial!
</p>

<p class="Navigation">
  <a class="Navigation-prev" href="add-a-test.html">&lt; Add a test</a>
  <a class="Navigation-next" href="module-conclusion.html">Conclusion and links
    to more information &gt;</a>
</p>
