diff --git a/cmake/OpenCVGenPkgconfig.cmake b/cmake/OpenCVGenPkgconfig.cmake
index b8cb8777c06b..75281ee964fd 100644
--- a/cmake/OpenCVGenPkgconfig.cmake
+++ b/cmake/OpenCVGenPkgconfig.cmake
@@ -27,7 +27,7 @@ macro(fix_prefix lst isown)
       get_filename_component(libdir "${item}" PATH)
       get_filename_component(libname "${item}" NAME_WE)
       string(REGEX REPLACE "^lib(.*)" "\\1" libname "${libname}")
-      list(APPEND _lst "-L${libdir}" "-l${libname}")
+      list(APPEND _lst "-l${libname}")
     else()
       list(APPEND _lst "-l${item}")
     endif()
@@ -66,10 +66,14 @@ ocv_list_unique(_3rdparty)
 
 set(OPENCV_PC_LIBS
   "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
+  "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
   "${_modules}"
 )
 if (BUILD_SHARED_LIBS)
-  set(OPENCV_PC_LIBS_PRIVATE "${_extra}")
+  set(OPENCV_PC_LIBS_PRIVATE
+    "-L\${exec_prefix}/${OPENCV_LIB_INSTALL_PATH}"
+    "${_extra}"
+  )
 else()
   set(OPENCV_PC_LIBS_PRIVATE
     "-L\${exec_prefix}/${OPENCV_3P_LIB_INSTALL_PATH}"
