diff --git a/cc/cc.go b/cc/cc.go
index cff8d85..8069a90 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -1054,6 +1054,9 @@
 		}
 	})
 
+	// Dedup exported flags from dependencies
+	depPaths.Flags = firstUniqueElements(depPaths.Flags)
+
 	return depPaths
 }
 
@@ -1175,6 +1178,23 @@
 	}
 }
 
+// firstUniqueElements returns all unique elements of a slice, keeping the first copy of each
+// modifies the slice contents in place, and returns a subslice of the original slice
+func firstUniqueElements(list []string) []string {
+	k := 0
+outer:
+	for i := 0; i < len(list); i++ {
+		for j := 0; j < k; j++ {
+			if list[i] == list[j] {
+				continue outer
+			}
+		}
+		list[k] = list[i]
+		k++
+	}
+	return list[:k]
+}
+
 // lastUniqueElements returns all unique elements of a slice, keeping the last copy of each
 // modifies the slice contents in place, and returns a subslice of the original slice
 func lastUniqueElements(list []string) []string {
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 6e779e7..92120a5 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -6,6 +6,56 @@
 	"testing"
 )
 
+var firstUniqueElementsTestCases = []struct {
+	in  []string
+	out []string
+}{
+	{
+		in:  []string{"a"},
+		out: []string{"a"},
+	},
+	{
+		in:  []string{"a", "b"},
+		out: []string{"a", "b"},
+	},
+	{
+		in:  []string{"a", "a"},
+		out: []string{"a"},
+	},
+	{
+		in:  []string{"a", "b", "a"},
+		out: []string{"a", "b"},
+	},
+	{
+		in:  []string{"b", "a", "a"},
+		out: []string{"b", "a"},
+	},
+	{
+		in:  []string{"a", "a", "b"},
+		out: []string{"a", "b"},
+	},
+	{
+		in:  []string{"a", "b", "a", "b"},
+		out: []string{"a", "b"},
+	},
+	{
+		in:  []string{"liblog", "libdl", "libc++", "libdl", "libc", "libm"},
+		out: []string{"liblog", "libdl", "libc++", "libc", "libm"},
+	},
+}
+
+func TestFirstUniqueElements(t *testing.T) {
+	for _, testCase := range firstUniqueElementsTestCases {
+		out := firstUniqueElements(testCase.in)
+		if !reflect.DeepEqual(out, testCase.out) {
+			t.Errorf("incorrect output:")
+			t.Errorf("     input: %#v", testCase.in)
+			t.Errorf("  expected: %#v", testCase.out)
+			t.Errorf("       got: %#v", out)
+		}
+	}
+}
+
 var lastUniqueElementsTestCases = []struct {
 	in  []string
 	out []string
