diff --git a/clang_delta/ClangDelta.cpp b/clang_delta/ClangDelta.cpp
index 9f5d15d4..76783f57 100644
--- a/clang_delta/ClangDelta.cpp
+++ b/clang_delta/ClangDelta.cpp
@@ -17,6 +17,7 @@
 #include <cstdlib>
 
 #include "llvm/Support/raw_ostream.h"
+#include "clang/Basic/Version.h"
 #include "TransformationManager.h"
 #include "git_version.h"
 
@@ -25,8 +26,15 @@ static int ErrorCode = -1;
 
 static void PrintVersion()
 {
+  // Some versions of the clang library (notably Ubuntu) prefixes its version
+  // string with uninteresting information. Strip this.
+  auto version = clang::getClangFullVersion();
+  auto start = version.find("clang version");
+  assert(start != version.npos);
+
   llvm::outs() << "clang_delta " << PACKAGE_VERSION << "\n";
   llvm::outs() << "Git version: " << git_version << "\n";
+  llvm::outs() << version.substr(start) << "\n";
   // XXX print copyright, contact info, etc.?
 }
 
diff --git a/clang_delta/tests/test_clang_delta.py b/clang_delta/tests/test_clang_delta.py
index 4ef24a22..6c7cd209 100644
--- a/clang_delta/tests/test_clang_delta.py
+++ b/clang_delta/tests/test_clang_delta.py
@@ -4,18 +4,14 @@
 import unittest
 
 
-def get_llvm_version():
+def get_clang_version():
     current = os.path.dirname(__file__)
     binary = os.path.join(current, '../clang_delta')
-    output = subprocess.check_output(f'ldd {binary}', shell=True, text=True)
+    output = subprocess.check_output(f'{binary} --version', shell=True, text=True)
     for line in output.splitlines():
-        part = line.strip().split()[0]
-        if part.startswith('libLLVM'):
-            m = re.match(r'libLLVM-(?P<version>[0-9]+)\.so', part)
-            if m:
-                return int(m.group('version'))
-            else:
-                return int(part.split('.')[-1])
+        m = re.match(r'clang version (?P<version>[0-9]+)\.', line)
+        if m:
+            return int(m.group('version'))
 
     raise AssertionError()
 
@@ -378,7 +374,7 @@ def test_rename_class_base_specifier(self):
     def test_rename_class_bool(self):
         self.check_clang_delta('rename-class/bool.cc', '--transformation=rename-class --counter=1')
 
-    @unittest.skipIf(get_llvm_version() >= 16, 'Fails with LLVM >= 16')
+    @unittest.skipIf(get_clang_version() >= 16, 'Fails with LLVM >= 16')
     def test_rename_class_class_template(self):
         self.check_clang_delta('rename-class/class_template.cc', '--transformation=rename-class --counter=1')
 
@@ -639,7 +635,7 @@ def test_rename_operator_test2(self):
     def test_merge_base_class_test1(self):
         self.check_clang_delta('merge-base-class/test1.cc', '--transformation=merge-base-class --counter=1')
 
-    @unittest.skipIf(get_llvm_version() <= 9, 'Fails with LLVM <= 9')
+    @unittest.skipIf(get_clang_version() <= 9, 'Fails with LLVM <= 9')
     def test_merge_base_class_test2(self):
         self.check_clang_delta('merge-base-class/test2.cc', '--transformation=merge-base-class --counter=1')