diff --git a/config/libc.in b/config/libc.in
index cd3ccec8..e05934fd 100644
--- a/config/libc.in
+++ b/config/libc.in
@@ -87,6 +87,26 @@ config THREADS_NONE
 
 endchoice
 
+config CREATE_LDSO_CONF
+    bool "Create /etc/ld.so.conf file"
+    depends on SHARED_LIBS
+    default y if MULTILIB
+    help
+      Create /etc/ld.so.conf file in the sysroot directory for the
+      target.
+
+      Note that Buildroot errors out if it sees /etc/ld.so.conf.
+
+config LDSO_CONF_EXTRA_DIRS_ARRAY
+    string "Extra directories to add to /etc/ld.so.conf
+    depends on CREATE_LDSO_CONF
+    help
+      Extra directories to include in /etc/ld.so.conf. The directories
+      will be augmented per compiler's multilib specification,
+      if applicable. For example, if the compiler's multilibs include
+      /lib and /lib64, and you specify /usr/local/lib here, ld.so.conf
+      will have both /usr/local/lib and /usr/local/lib64.
+
 config LIBC_XLDD
     bool
     prompt "Install a cross ldd-like helper"
diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh
index a1c9b555..db9b1fde 100644
--- a/scripts/build/internals.sh
+++ b/scripts/build/internals.sh
@@ -10,7 +10,7 @@ create_ldso_conf()
     done
 
     CT_DoExecLog ALL mkdir -p "${multi_root}/etc"
-    for b in /lib /usr/lib /usr/local/lib; do
+    for b in /lib /usr/lib "${CT_LDSO_CONF_EXTRA_DIRS_ARRAY[@]}"; do
         d="${b}/${multi_os_dir}"
         CT_SanitizeVarDir d
         echo "${d}" >> "${multi_root}/etc/ld.so.conf"
@@ -34,7 +34,7 @@ do_finish() {
 
     CT_DoStep INFO "Finalizing the toolchain's directory"
 
-    if [ "${CT_SHARED_LIBS}" = "y" ]; then
+    if [ "${CT_CREATE_LDSO_CONF}" = "y" ]; then
         # Create /etc/ld.so.conf
         CT_mkdir_pushd "${CT_BUILD_DIR}/build-create-ldso"
         CT_IterateMultilibs create_ldso_conf create-ldso