diff --git a/README.md b/README.md
index 1d5942ac..7601d8a6 100644
--- a/README.md
+++ b/README.md
@@ -32,10 +32,18 @@ Sponsored by [GolangCI.com](https://golangci.com): SaaS service for running lint
    * [Contact Information](#contact-information)
 
 # Install
+Recommended way to install is:
 ```bash
 go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
 ```
 
+You can also install it by brew:
+```bash
+brew install golangci/tap/golangci-lint
+```
+
+Check the [releases page](https://github.com/golangci/golangci-lint/releases) to fix the version.
+
 # Demo
 Example of output:
 ![Screenshot of sample output](docs/run_screenshot.png)
diff --git a/pkg/commands/run.go b/pkg/commands/run.go
index b5a5ea0d..0f1f6551 100644
--- a/pkg/commands/run.go
+++ b/pkg/commands/run.go
@@ -9,6 +9,7 @@ import (
 	"io/ioutil"
 	"log"
 	"os"
+	"os/exec"
 	"runtime"
 	"strings"
 	"time"
@@ -175,7 +176,31 @@ func buildSSAProgram(ctx context.Context, lprog *loader.Program) *ssa.Program {
 	return ssaProg
 }
 
+func discoverGoRoot() (string, error) {
+	goroot := os.Getenv("GOROOT")
+	if goroot != "" {
+		return goroot, nil
+	}
+
+	output, err := exec.Command("go", "env", "GOROOT").Output()
+	if err != nil {
+		return "", fmt.Errorf("can't execute go env GOROOT: %s", err)
+	}
+
+	return strings.TrimSpace(string(output)), nil
+}
+
 func buildLintCtx(ctx context.Context, linters []pkg.Linter, cfg *config.Config) (*golinters.Context, error) {
+	// Set GOROOT to have working cross-compilation: cross-compiled binaries
+	// have invalid GOROOT. XXX: can't use runtime.GOROOT().
+	goroot, err := discoverGoRoot()
+	if err != nil {
+		return nil, fmt.Errorf("can't discover GOROOT: %s", err)
+	}
+	os.Setenv("GOROOT", goroot)
+	build.Default.GOROOT = goroot
+	logrus.Infof("set GOROOT=%q", goroot)
+
 	args := cfg.Run.Args
 	if len(args) == 0 {
 		args = []string{"./..."}