diff --git a/cc/cc.go b/cc/cc.go
index 56655b9..3b3128f 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1086,9 +1086,17 @@
 		VariantIsStatic       bool `blueprint:"mutated"`
 		VariantIsStaticBinary bool `blueprint:"mutated"`
 	}
+
+	runPaths []string
 }
 
-func (linker *baseLinker) begin(ctx BaseModuleContext) {}
+func (linker *baseLinker) begin(ctx BaseModuleContext) {
+	if ctx.toolchain().Is64Bit() {
+		linker.runPaths = []string{"../lib64", "lib64"}
+	} else {
+		linker.runPaths = []string{"../lib", "lib"}
+	}
+}
 
 func (linker *baseLinker) props() []interface{} {
 	return []interface{}{&linker.Properties, &linker.dynamicProperties}
@@ -1152,6 +1160,17 @@
 		}
 	}
 
+	if ctx.Host() && !linker.static() {
+		rpath_prefix := `\$$ORIGIN/`
+		if ctx.Darwin() {
+			rpath_prefix = "@loader_path/"
+		}
+
+		for _, rpath := range linker.runPaths {
+			flags.LdFlags = append(flags.LdFlags, "-Wl,-rpath,"+rpath_prefix+rpath)
+		}
+	}
+
 	if flags.Clang {
 		flags.LdFlags = append(flags.LdFlags, toolchain.ToolchainClangLdflags())
 	} else {
@@ -1781,6 +1800,16 @@
 	Properties TestLinkerProperties
 }
 
+func (test *testLinker) begin(ctx BaseModuleContext) {
+	test.binaryLinker.begin(ctx)
+
+	runpath := "../../lib"
+	if ctx.toolchain().Is64Bit() {
+		runpath += "64"
+	}
+	test.runPaths = append([]string{runpath}, test.runPaths...)
+}
+
 func (test *testLinker) props() []interface{} {
 	return append(test.binaryLinker.props(), &test.Properties)
 }
