| <!--{ |
| "Title": "Compile and install the application" |
| }--> |
| |
| <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">< Add a test</a> |
| <a class="Navigation-next" href="module-conclusion.html">Conclusion and links |
| to more information ></a> |
| </p> |