diff --git a/BUILD.gn b/BUILD.gn
index 31cf726..f7eca78 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -73,6 +73,9 @@
       } else {
         deps += [ "modules/video_capture:video_capture_tests" ]
       }
+      if (!is_android && !is_ios) {
+        deps += [ ":webrtc_lib_link_test" ]
+      }
       if (rtc_enable_protobuf) {
         deps += [
           "audio:low_bandwidth_audio_test",
@@ -389,8 +392,11 @@
 if (!build_with_chromium) {
   # Target to build all the WebRTC production code.
   rtc_static_library("webrtc") {
-    # Only the root target should depend on this.
-    visibility = [ "//:default" ]
+    # Only the root target and the test should depend on this.
+    visibility = [
+      "//:default",
+      "//:webrtc_lib_link_test",
+    ]
 
     sources = []
     complete_static_lib = true
@@ -459,6 +465,23 @@
       deps += [ "logging:rtc_event_log_proto" ]
     }
   }
+
+  if (rtc_include_tests && !is_android && !is_ios) {
+    # Note: This test can't work on mobile because the test runner machinery
+    # on those platforms depend on abseil, which will link-clash with libwebrtc.
+    rtc_test("webrtc_lib_link_test") {
+      testonly = true
+
+      sources = [
+        "webrtc_lib_link_test.cc",
+      ]
+      deps = [
+        ":webrtc",
+        "//test:test_main",
+        "//testing/gtest",
+      ]
+    }
+  }
 }
 
 rtc_source_set("webrtc_common") {
diff --git a/DEPS b/DEPS
index 0dd43c2..839a927 100644
--- a/DEPS
+++ b/DEPS
@@ -2280,3 +2280,11 @@
   # Abseil flags are allowed in tests and tools.
   "+absl/flags",
 ]
+
+specific_include_rules = {
+  "webrtc_lib_link_test\.cc": [
+    "+media/engine",
+    "+modules/audio_device",
+    "+modules/audio_processing",
+  ]
+}
diff --git a/webrtc_lib_link_test.cc b/webrtc_lib_link_test.cc
new file mode 100644
index 0000000..afd787f
--- /dev/null
+++ b/webrtc_lib_link_test.cc
@@ -0,0 +1,87 @@
+/*
+ *  Copyright 2019 The WebRTC Project Authors. All rights reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+#include "api/audio_codecs/audio_decoder_factory_template.h"
+#include "api/audio_codecs/audio_encoder_factory_template.h"
+#include "api/audio_codecs/opus/audio_decoder_opus.h"
+#include "api/audio_codecs/opus/audio_encoder_opus.h"
+#include "api/call/call_factory_interface.h"
+#include "api/create_peerconnection_factory.h"
+#include "api/peer_connection_interface.h"
+#include "api/rtc_event_log/rtc_event_log_factory.h"
+#include "api/stats/rtcstats_objects.h"
+#include "api/task_queue/default_task_queue_factory.h"
+#include "api/video_codecs/builtin_video_decoder_factory.h"
+#include "api/video_codecs/builtin_video_encoder_factory.h"
+#include "media/engine/webrtc_media_engine.h"
+#include "modules/audio_device/include/audio_device.h"
+#include "modules/audio_processing/include/audio_processing.h"
+
+#include "test/gtest.h"
+
+namespace webrtc {
+
+cricket::MediaEngineDependencies CreateSomeMediaDeps(
+    TaskQueueFactory* task_queue_factory) {
+  cricket::MediaEngineDependencies media_deps;
+  media_deps.task_queue_factory = task_queue_factory;
+  media_deps.adm = AudioDeviceModule::CreateForTest(
+      AudioDeviceModule::kDummyAudio, task_queue_factory);
+  media_deps.audio_encoder_factory =
+      webrtc::CreateAudioEncoderFactory<webrtc::AudioEncoderOpus>();
+  media_deps.audio_decoder_factory =
+      webrtc::CreateAudioDecoderFactory<webrtc::AudioDecoderOpus>();
+  media_deps.video_encoder_factory = CreateBuiltinVideoEncoderFactory();
+  media_deps.video_decoder_factory = webrtc::CreateBuiltinVideoDecoderFactory();
+  media_deps.audio_processing = webrtc::AudioProcessingBuilder().Create();
+  return media_deps;
+}
+
+// This test should pull in as much of WebRTC as possible to make sure most
+// commonly used symbols are actually in libwebrtc.a.
+webrtc::PeerConnectionFactoryDependencies CreateSomePcfDeps() {
+  webrtc::PeerConnectionFactoryDependencies pcf_deps;
+  pcf_deps.task_queue_factory = CreateDefaultTaskQueueFactory();
+  pcf_deps.signaling_thread = rtc::Thread::Current();
+  pcf_deps.network_thread = rtc::Thread::Current();
+  pcf_deps.worker_thread = rtc::Thread::Current();
+  pcf_deps.call_factory = webrtc::CreateCallFactory();
+  pcf_deps.event_log_factory = std::make_unique<webrtc::RtcEventLogFactory>(
+      pcf_deps.task_queue_factory.get());
+  auto media_deps = CreateSomeMediaDeps(pcf_deps.task_queue_factory.get());
+  pcf_deps.media_engine = cricket::CreateMediaEngine(std::move(media_deps));
+  return pcf_deps;
+}
+
+TEST(WebRTCLinkTest, TestCreatingAPeerConnectionViaModularFactory) {
+  auto pcf_deps = CreateSomePcfDeps();
+  auto peer_connection_factory =
+      webrtc::CreateModularPeerConnectionFactory(std::move(pcf_deps));
+  webrtc::PeerConnectionInterface::RTCConfiguration rtc_config;
+  auto peer_connection = peer_connection_factory->CreatePeerConnection(
+      rtc_config, nullptr, nullptr, nullptr);
+  ASSERT_EQ(peer_connection.get(), nullptr)
+      << "Should fail, we're not setting things up right";
+}
+
+TEST(WebRTCLinkTest, TestCreatingViaPCFactory) {
+  auto task_queue_factory = CreateDefaultTaskQueueFactory();
+  auto media_deps = CreateSomeMediaDeps(task_queue_factory.get());
+
+  auto peer_connection_factory = webrtc::CreatePeerConnectionFactory(
+      rtc::Thread::Current(), rtc::Thread::Current(), rtc::Thread::Current(),
+      std::move(media_deps.adm), std::move(media_deps.audio_encoder_factory),
+      std::move(media_deps.audio_decoder_factory),
+      std::move(media_deps.video_encoder_factory),
+      std::move(media_deps.video_decoder_factory), nullptr, nullptr);
+  ASSERT_NE(peer_connection_factory.get(), nullptr);
+}
+
+}  // namespace webrtc
