diff --git a/configure b/configure
index 99448d1ab46ab9766cdc5ff68d39c669ea688c44..e5042e793f738b65c77101c994043cfddb15ec26 100755
--- a/configure
+++ b/configure
@@ -10881,17 +10881,20 @@ ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5'
 ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_fc_compiler_gnu
 
-
-   acx_Comp=$FC
-   $as_echo "$as_me:${as_lineno-$LINENO}: testing if $acx_Comp cannot build working shared objects" >&5
+                  $as_echo "$as_me:${as_lineno-$LINENO}: testing if $FC cannot build working shared objects" >&5
    case $host in #(
   *-ibm-aix*) :
-    if $acx_Comp -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then :
+    if $FC -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then :
   acx_cv_disable_shared=yes
 fi ;; #(
   x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*) :
-    if $acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then :
-  acx_cv_disable_shared=yes
+    if $FC -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then :
+  case " $FCFLAGS $LDFLAGS " in #(
+  *\ -Qlocation,ld,*\ *) :
+    acx_cv_disable_shared=yes ;; #(
+  *) :
+    FCFLAGS="$FCFLAGS -Qlocation,ld,$ac_abs_confdir/util/icomp15" ;;
+esac
 fi ;; #(
   *) :
      ;;
@@ -10908,17 +10911,20 @@ ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
 ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_f77_compiler_gnu
 
-
-   acx_Comp=$F77
-   $as_echo "$as_me:${as_lineno-$LINENO}: testing if $acx_Comp cannot build working shared objects" >&5
+                  $as_echo "$as_me:${as_lineno-$LINENO}: testing if $F77 cannot build working shared objects" >&5
    case $host in #(
   *-ibm-aix*) :
-    if $acx_Comp -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then :
+    if $F77 -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then :
   acx_cv_disable_shared=yes
 fi ;; #(
   x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*) :
-    if $acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then :
-  acx_cv_disable_shared=yes
+    if $F77 -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then :
+  case " $FFLAGS $LDFLAGS " in #(
+  *\ -Qlocation,ld,*\ *) :
+    acx_cv_disable_shared=yes ;; #(
+  *) :
+    FFLAGS="$FFLAGS -Qlocation,ld,$ac_abs_confdir/util/icomp15" ;;
+esac
 fi ;; #(
   *) :
      ;;
@@ -10936,17 +10942,20 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-
-   acx_Comp=$CC
-   $as_echo "$as_me:${as_lineno-$LINENO}: testing if $acx_Comp cannot build working shared objects" >&5
+                  $as_echo "$as_me:${as_lineno-$LINENO}: testing if $CC cannot build working shared objects" >&5
    case $host in #(
   *-ibm-aix*) :
-    if $acx_Comp -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then :
+    if $CC -G -v 2>&1 | grep ' -binitfini:poe_remote_main ' >/dev/null; then :
   acx_cv_disable_shared=yes
 fi ;; #(
   x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*) :
-    if $acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then :
-  acx_cv_disable_shared=yes
+    if $CC -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.[123]' >/dev/null; then :
+  case " $CFLAGS $LDFLAGS " in #(
+  *\ -Qlocation,ld,*\ *) :
+    acx_cv_disable_shared=yes ;; #(
+  *) :
+    CFLAGS="$CFLAGS -Qlocation,ld,$ac_abs_confdir/util/icomp15" ;;
+esac
 fi ;; #(
   *) :
      ;;
diff --git a/m4/acx_lt_problems.m4 b/m4/acx_lt_problems.m4
index c775ff873744b2b0290826d8c65ab74537f02c61..99da19b3aaa8d256f77cb617a266f262fdf863bc 100644
--- a/m4/acx_lt_problems.m4
+++ b/m4/acx_lt_problems.m4
@@ -54,10 +54,10 @@ dnl     causes a duplicate exit handler that fails and clobbers the
 dnl     programs exit status (set to 128).
 dnl
 AC_DEFUN([_ACX_LT_PROBLEMS],
-  [AC_REQUIRE([AC_CANONICAL_HOST])
-   AC_LANG_CASE([Fortran],[acx_Comp=$FC],
-     [Fortran 77],[acx_Comp=$F77],
-     [C],[acx_Comp=$CC])
+  [AC_REQUIRE([AC_CANONICAL_HOST])dnl
+   AC_LANG_CASE([Fortran],[m4_pushdef([acx_Comp],[FC])m4_pushdef([acx_flags_var],[FCFLAGS])],
+     [Fortran 77],[m4_pushdef([acx_Comp],[F77])m4_pushdef([acx_flags_var],[FFLAGS])],
+     [C],[m4_pushdef([acx_Comp],[CC])m4_pushdef([acx_flags_var],[CFLAGS])])dnl
    _AS_ECHO_LOG([testing if $acx_Comp cannot build working shared objects])
    AS_CASE([$host],
      [*-ibm-aix*],
@@ -65,8 +65,11 @@ AC_DEFUN([_ACX_LT_PROBLEMS],
         [acx_cv_disable_shared=yes])],
      [x86_64-*-linux-*|i*86-*-linux-*|*-apple-darwin*|ia64-*-linux-*|x86_64-*-freebsd*|i*86-*-freebsd*],
      [AS_IF([$acx_Comp -V 2>&1 | grep '^Intel(R).*Fortran.*Compiler.*Version 15.0.@<:@123@:>@' >/dev/null],
-        [acx_cv_disable_shared=yes])])
-   _AS_ECHO_LOG([result: $acx_cv_disable_shared])])
+        [AS_CASE([" $acx_flags_var $LDFLAGS "],
+           [*\ -Qlocation,ld,*\ *],
+           [acx_cv_disable_shared=yes],
+           [acx_flags_var="$acx_flags_var -Qlocation,ld,$ac_abs_confdir/util/icomp15"])])])
+   _AS_ECHO_LOG([result: $acx_cv_disable_shared])m4_popdef([acx_Comp])m4_popdef([acx_flags_var])])
 dnl
 dnl run test for C and Fortran compilers
 AC_DEFUN([ACX_LT_PROBLEMS],
diff --git a/src/cdi.inc b/src/cdi.inc
index d469d2c60f31d95d3e1be619062b3a85a57685d9..98db0576cc7a1e29c8ec44462df749864c3c658c 100644
--- a/src/cdi.inc
+++ b/src/cdi.inc
@@ -4,7 +4,7 @@
 !
 ! Author:
 ! -------
-! Uwe Schulzweida, MPI-MET, Hamburg,   March 2022
+! Uwe Schulzweida, MPI-MET, Hamburg,   April 2022
 !
 
       INTEGER    CDI_MAX_NAME
diff --git a/src/cdipio.inc b/src/cdipio.inc
index f73c9dfd7ac33ca390a8267919f6bc294d625012..7160d4dc05438e465454d851c533951a812b6f4d 100644
--- a/src/cdipio.inc
+++ b/src/cdipio.inc
@@ -4,7 +4,7 @@
 !
 ! Author:
 ! -------
-! Uwe Schulzweida, MPI-MET, Hamburg,   March 2022
+! Uwe Schulzweida, MPI-MET, Hamburg,   April 2022
 !
 
 !
diff --git a/util/icomp15/ld b/util/icomp15/ld
new file mode 100755
index 0000000000000000000000000000000000000000..a2a4dc217bae934ad01c302b39ae23a91e198598
--- /dev/null
+++ b/util/icomp15/ld
@@ -0,0 +1,79 @@
+#! /bin/bash
+#
+#
+# ld --- wrapper of ld to work around a bug in ifort 15.0.1-15.0.3
+#
+# Copyright  (C)  2022  Thomas Jahns <jahns@dkrz.de>
+#
+# Version: 1.0
+# Author: Thomas Jahns <jahns@dkrz.de>
+# Keywords:
+# Maintainer: Thomas Jahns <jahns@dkrz.de>
+# URL: https://www.dkrz.de/redmine/projects/yaxt
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are  permitted provided that the following conditions are
+# met:
+#
+# Redistributions of source code must retain the above copyright notice,
+# this list of conditions and the following disclaimer.
+#
+# Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# Neither the name of the DKRZ GmbH nor the names of its contributors
+# may be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+declare -a args=("$@")
+case " $* " in
+  # are we building a shared object?
+  (*\ -shared\ *)
+    # establish whether the user intended the inclusion of static intel
+    # libraries into shared object?
+    shared_intel=1
+    while IFS= read -r -d '' arg; do
+      case $arg in
+        (-shared-intel|-i-dynamic)
+          shared_intel=1
+          ;;
+        (-static-intel|-i-static|-fast)
+          shared_intel=0
+          ;;
+      esac
+    done <"/proc/$PPID/cmdline"
+    if ((shared_intel==1)); then
+      # if so, prevent core routines from being linked into the DSO
+      # directly.
+      declare -i i
+      for ((i=0; i<$#; ++i)); do
+        case ${args[i]} in
+          (-lifcoremt_pic|-lifcore_pic)
+            args[i]=${args[i]%_pic}
+          ;;
+        esac
+      done
+    fi
+    ;;
+esac
+exec ld "${args[@]}"
+#
+# Local Variables:
+# mode: sh
+# license-project-url: "https://www.dkrz.de/redmine/projects/yaxt"
+# license-default: "bsd"
+# End:
+#