diff --git a/src/ruby/ext/grpc/extconf.rb b/src/ruby/ext/grpc/extconf.rb
index 803f8fb550144765f60530a6cffae2b2c7a7e198..7972272e2df6dff31737120a22b6f75091360d87 100644
--- a/src/ruby/ext/grpc/extconf.rb
+++ b/src/ruby/ext/grpc/extconf.rb
@@ -88,8 +88,10 @@ else
     else
       grpc_lib_dir = File.join(File.join(grpc_root, 'libs'), grpc_config)
     end
-    print "Building internal gRPC\n"
-    system("make -C #{grpc_root} static_c CONFIG=#{grpc_config}")
+    unless File.exist?(File.join(grpc_lib_dir, 'libgrpc.a'))
+      print "Building internal gRPC\n"
+      system("make -C #{grpc_root} static_c CONFIG=#{grpc_config}")
+    end
     $CFLAGS << ' -I' + File.join(grpc_root, 'include')
     $LDFLAGS << ' -L' + grpc_lib_dir
     raise 'gpr not found' unless have_library('gpr', 'gpr_now')