diff --git a/src/libcamera/proxy/worker/meson.build b/src/libcamera/proxy/worker/meson.build
index 70c8760a3d42..aa4d9cd7b5d8 100644
--- a/src/libcamera/proxy/worker/meson.build
+++ b/src/libcamera/proxy/worker/meson.build
@@ -1,6 +1,6 @@
 # SPDX-License-Identifier: CC0-1.0
 
-proxy_install_dir = get_option('libexecdir') / 'libcamera'
+proxy_install_dir = libcamera_libexecdir
 
 # generate {pipeline}_ipa_proxy_worker.cpp
 foreach mojom : ipa_mojoms
diff --git a/src/meson.build b/src/meson.build
index a3821fb90a0f..165a77bb9d53 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -3,6 +3,7 @@
 # Cache system paths
 libcamera_datadir = get_option('datadir') / 'libcamera'
 libcamera_libdir = get_option('libdir') / 'libcamera'
+libcamera_libexecdir = get_option('libexecdir') / 'libcamera'
 libcamera_sysconfdir = get_option('sysconfdir') / 'libcamera'
 
 config_h.set('LIBCAMERA_DATA_DIR', '"' + get_option('prefix') / libcamera_datadir + '"')
diff --git a/src/v4l2/meson.build b/src/v4l2/meson.build
index f132103cb503..ab4b35dd0e6b 100644
--- a/src/v4l2/meson.build
+++ b/src/v4l2/meson.build
@@ -31,6 +31,7 @@ v4l2_compat = shared_library('v4l2-compat',
                              v4l2_compat_sources,
                              name_prefix : '',
                              install : true,
+                             install_dir : libcamera_libexecdir,
                              dependencies : [libcamera_private, libdl],
                              cpp_args : v4l2_compat_cpp_args)
 
@@ -38,7 +39,7 @@ v4l2_compat = shared_library('v4l2-compat',
 # adaptation layer.
 
 cdata = configuration_data()
-cdata.set('LIBCAMERA_V4L2_SO', get_option('prefix') / get_option('libdir') / 'v4l2-compat.so')
+cdata.set('LIBCAMERA_V4L2_SO', get_option('prefix') / libcamera_libexecdir / 'v4l2-compat.so')
 
 configure_file(input : 'libcamerify.in',
                output : 'libcamerify',
