[CMake] Linker Path Issues: /usr/local/lib
Ryan Farrell
farrellucb at gmail.com
Thu Jul 14 13:19:45 EDT 2011
Hi everyone,
I'm using cmake to try and Build the latest release of OpenCV (2.3), but am
encountering an error. It's important to know that this is on a shared
cluster machine where I don't have root access. I've therefore built and
installed a few libraries (ffmpeg for example) locally. I'm trying to use
these libraries (which, unlike the system installed versions, have both
static and shared libraries built) in my opencv build. Somehow
/usr/local/lib is creeping into my build and causing problems... I haven't
specified that path anywhere and it's not in my PATH/LD_LIBRARY_PATH
environment variables:
PATH=[trimmed]/farrell/bin:/u/vis/software/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11/bin
LD_LIBRARY_PATH=/u/vis/software/lib:/usr/lib64:/usr/lib
So, here's the command that I'm using to configure with cmake and the output
it produces (trimmed in a few places for brevity). Cmake seems to find the
ffmpeg libraries fine (in particular, libavcodec which is the one it dies on
when building). Note that /usr/local/lib is also producing some troublesome
warnings about hiding the correct libraries in /usr/lib64...
farrell at banana2:/u/vis/software/dist/OpenCV-2.3.0/release> cmake
-DCMAKE_BUILD_TYPE=RELEASE -DBUILD_PYTHON_SUPPORT=1
-DCMAKE_INSTALL_PREFIX=/u/vis/software -DCMAKE_VERBOSE=1
-DCMAKE_BUILD_WITH_INSTALL_RPATH=1 ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Extracting svn version, please wait...
-- SVNVERSION:
-- Detected version of GNU GCC: 41 (401)
...
-- package 'gstreamer-video-0.10' not found
*-- checking for module 'libavcodec'
-- found libavcodec, version 52.20.0
*-- checking for module 'libavformat'
-- found libavformat, version 52.31.0
-- checking for module 'libavutil'
-- found libavutil, version 49.15.0
-- checking for module 'libswscale'
-- found libswscale, version 0.7.1
-- Looking for libavformat/avformat.h
-- Looking for libavformat/avformat.h - found
-- Looking for ffmpeg/avformat.h
-- Looking for ffmpeg/avformat.h - not found
-- checking for module 'libdc1394-2'
...
-- Parsing 'cvconfig.h.cmake'
-- GRFMT:
/usr/lib64/libz.so;/usr/lib64/libjpeg.so;/usr/lib64/libpng.so;/usr/lib64/libz.so;/usr/lib64/libtiff.so;libjasper
-- HIGHGUI_LIBS:
gthread-2.0;rt;glib-2.0;avcodec;avformat;avutil;swscale;/usr/lib64/libbz2.so
-- OPENCV_LIBS: dl;m;pthread;rt
--
-- General configuration for opencv 2.3.0
=====================================
--
-- Built as dynamic libs?: ON
-- Compiler:
-- C++ flags (Release): -Wall -Wno-long-long -pthread
-ffunction-sections -O3 -DNDEBUG -fomit-frame-pointer -ffast-math -msse
-msse2 -DNDEBUG
-- C++ flags (Debug): -Wall -Wno-long-long -pthread
-ffunction-sections -g -O0 -DDEBUG -D_DEBUG -ggdb3
-- Linker flags (Release):
-- Linker flags (Debug):
--
...
--
-- Video I/O:
-- DC1394 1.x: 0
-- DC1394 2.x: 0
*-- FFMPEG: 1
-- codec: 1
*-- format: 1
-- util: 1
-- swscale: 1
-- gentoo-style: 1
-- GStreamer: 0
-- UniCap: FALSE
-- PvAPI:
-- V4L/V4L2: /
-- Xine: FALSE
--
...
-- Documentation:
-- Build Documentation: NO
--
-- Install path: /u/vis/software
--
-- cvconfig.h is in: /u/vis/software/dist/OpenCV-2.3.0/release
-- -----------------------------------------------------------------
--
-- Configuring done
CMake Warning at modules/highgui/CMakeLists.txt:259 (add_library):
Cannot generate a safe linker search path for target opencv_highgui
because
files in some directories may conflict with libraries in implicit
directories:
link library [libz.so] in */usr/lib64* may be hidden by files in:
*/usr/local/lib
* link library [libtiff.so] in */usr/lib64* may be hidden by files in:
*/usr/local/lib
* Some of these libraries may not be found correctly.
CMake Warning at modules/highgui/CMakeLists.txt:259 (add_library):
Cannot generate a safe runtime search path for target opencv_highgui
because files in some directories may conflict with libraries in implicit
directories:
runtime library [libz.so.1] in /usr/lib64 may be hidden by files in:
/usr/local/lib
runtime library [libtiff.so.3] in /usr/lib64 may be hidden by files in:
/usr/local/lib
Some of these libraries may not be found correctly.
CMake Warning at modules/highgui/CMakeLists.txt:399 (add_executable):
Cannot generate a safe linker search path for target opencv_test_highgui
because files in some directories may conflict with libraries in implicit
directories:
link library [libz.so] in /usr/lib64 may be hidden by files in:
/usr/local/lib
Some of these libraries may not be found correctly.
CMake Warning at modules/highgui/CMakeLists.txt:399 (add_executable):
Cannot generate a safe runtime search path for target opencv_test_highgui
because files in some directories may conflict with libraries in implicit
directories:
runtime library [libz.so.1] in /usr/lib64 may be hidden by files in:
/usr/local/lib
Some of these libraries may not be found correctly.
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:
BUILD_PYTHON_SUPPORT
-- Build files have been written to:
/u/vis/software/dist/OpenCV-2.3.0/release
Then, when I run the build, I get the error below, showing that the "
-L/usr/local/lib" is causing the problem, clearly taking precedence over the
rpath "-Wl,-rpath,/u/vis/software/lib:/usr/local/lib".
Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/bin/c++ -fPIC -Wall -Wno-long-long -pthread -ffunction-sections -O3
-DNDEBUG -fomit-frame-pointer -ffast-math -msse -msse2 -DNDEBUG -shared
-Wl,-soname,libopencv_highgui.so.2.3 -o ../../lib/libopencv_highgui.so.2.3.0
CMakeFiles/opencv_highgui.dir/src/cap.o
CMakeFiles/opencv_highgui.dir/src/cap_images.o
CMakeFiles/opencv_highgui.dir/src/cap_ffmpeg.o
CMakeFiles/opencv_highgui.dir/src/loadsave.o
CMakeFiles/opencv_highgui.dir/src/precomp.o
CMakeFiles/opencv_highgui.dir/src/utils.o
CMakeFiles/opencv_highgui.dir/src/window.o
CMakeFiles/opencv_highgui.dir/src/bitstrm.o
CMakeFiles/opencv_highgui.dir/src/grfmt_exr.o
CMakeFiles/opencv_highgui.dir/src/grfmt_tiff.o
CMakeFiles/opencv_highgui.dir/src/grfmt_jpeg2000.o
CMakeFiles/opencv_highgui.dir/src/grfmt_bmp.o
CMakeFiles/opencv_highgui.dir/src/grfmt_imageio.o
CMakeFiles/opencv_highgui.dir/src/grfmt_png.o
CMakeFiles/opencv_highgui.dir/src/grfmt_sunras.o
CMakeFiles/opencv_highgui.dir/src/grfmt_base.o
CMakeFiles/opencv_highgui.dir/src/grfmt_pxm.o
CMakeFiles/opencv_highgui.dir/src/grfmt_jpeg.o *-L/usr/local/lib* -ldl -lm
-lpthread -lrt ../../lib/libopencv_core.so.2.3.0
../../lib/libopencv_imgproc.so.2.3.0 -lz -ljpeg -lpng -lz -ltiff
../../3rdparty/lib/liblibjasper.a -lgthread-2.0 -lrt -lglib-2.0 -lavcodec
-lavformat -lavutil -lswscale -lbz2 ../../lib/libopencv_core.so.2.3.0 -ldl
-lm -lpthread -lz -lrt *-Wl,-rpath,/u/vis/software/lib:/usr/local/lib *
/usr/bin/ld: skipping incompatible /usr/local/lib/libz.so when searching for
-lz
/usr/bin/ld: skipping incompatible /usr/local/lib/libz.a when searching for
-lz
/usr/bin/ld: skipping incompatible /usr/local/lib/libz.so when searching for
-lz
/usr/bin/ld: skipping incompatible /usr/local/lib/libz.a when searching for
-lz
/usr/bin/ld: skipping incompatible /usr/local/lib/libtiff.so when searching
for -ltiff
/usr/bin/ld: skipping incompatible /usr/local/lib/libtiff.a when searching
for -ltiff
/usr/bin/ld: skipping incompatible /usr/local/lib/libgthread-2.0.so when
searching for -lgthread-2.0
/usr/bin/ld: skipping incompatible /usr/local/lib/libglib-2.0.so when
searching for -lglib-2.0
/usr/bin/ld: skipping incompatible /usr/local/lib/libavcodec.a when
searching for -lavcodec
/usr/bin/ld: skipping incompatible /usr/local/lib/libavcodec.a when
searching for -lavcodec
/usr/bin/ld: cannot find -lavcodec
collect2: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so.2.3.0] Error 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] Error 2
make: *** [all] Error 2
So, my question is how do I get rid of "/usr/local/lib", in partiuclar the
"-L/usr/local/lib"? I'd also love to get rid of the warnings that hint that
for these other libs, the /usr/lib64 versions are getting overshadowed by
/usr/local/lib versions.
Thanks in advance!
Ryan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110714/c2d4e9bf/attachment.htm>
More information about the CMake
mailing list