[ros-users] OpenCL under OS X Leopard, dyld: Library not loa…

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: User discussions
Date:  
To: ros-users
Subject: [ros-users] OpenCL under OS X Leopard, dyld: Library not loaded
Hi,

I had a problem with OpenCL under OS X 10.6.5. Whenever I tried to
rosrun a program that dependet on OpenCL I got the following error message:

rosrun image_view image_view
dyld: Library not loaded: libopencv_core.2.1.dylib
Referenced from: /Users/lazewatskyd/ros/stacks/image_pipeline/
image_view/bin/image_view
Reason: image not found

After some google research, I found out, that I was not the first person
with that problem. Long story short, I found a script and modified it so
that it would fix my problem.

In case someone else has the same problem do the following steps:

1) Save the script into a file and remember the path to it (in this
example /path/to/mac_fix)
2) roscd into you opencv2 directory: roscd opencv2
3) Call the script: bash /path/to/mac_fix
4) Recompile the rospackages which depend on opencv

I hope this helps someone.

Greets
Julian

And here the modified script (original script is from the
embedded-control-library
http://embedded-control-library.googlecode.com/svn/trunk/ecl_vision/opencv_embedded./opencv
):
--------------------------------------------


#! /bin/bash

# On Mac OSX, every dynamic library (*.dylib) has its own 'install name',
# and it is used for locating the actual library file at runtime.
# The install name shows up at the first line of the output of 'otool -L
<name.dylib>'.
# When a program or a library is linked with other libraries, it copies
# all the install names of the other libraries, so that it can find them
in run-time.
#
# For an unknown reason, in our customised OpenCV package,
'opencv_embedded',
# the dynamic libraries do not have full path information in their
install names.
# This results in the 'image not found' error at runtime.
# This script (only for Mac OSX) fixes this problem by changing the
install names.


if [ "`uname`" == "Darwin" ]; then

     install_name_tool -id 
`pwd`/opencv/lib/libopencv_core.2.1.dylib      
opencv/lib/libopencv_core.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_calib3d.2.1.dylib      
opencv/lib/libopencv_calib3d.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_contrib.2.1.dylib      
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_features2d.2.1.dylib      
opencv/lib/libopencv_features2d.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_highgui.2.1.dylib      
opencv/lib/libopencv_highgui.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib      
opencv/lib/libopencv_imgproc.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_legacy.2.1.dylib      
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -id `pwd`/opencv/lib/libopencv_ml.2.1.dylib      
opencv/lib/libopencv_ml.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_objdetect.2.1.dylib      
opencv/lib/libopencv_objdetect.2.1.dylib
     install_name_tool -id 
`pwd`/opencv/lib/libopencv_video.2.1.dylib      
opencv/lib/libopencv_video.2.1.dylib


     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_core.2.1.dylib


     install_name_tool -change libopencv_calib3d.2.1.dylib 
`pwd`/opencv/lib/libopencv_calib3d.2.1.dylib 
opencv/lib/libopencv_calib3d.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_calib3d.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_calib3d.2.1.dylib


     install_name_tool -change libopencv_contrib.2.1.dylib 
`pwd`/opencv/lib/libopencv_contrib.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_calib3d.2.1.dylib 
`pwd`/opencv/lib/libopencv_calib3d.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_features2d.2.1.dylib 
`pwd`/opencv/lib/libopencv_features2d.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_highgui.2.1.dylib 
`pwd`/opencv/lib/libopencv_highgui.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_ml.2.1.dylib 
`pwd`/opencv/lib/libopencv_ml.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_video.2.1.dylib 
`pwd`/opencv/lib/libopencv_video.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib
     install_name_tool -change libopencv_objdetect.2.1.dylib 
`pwd`/opencv/lib/libopencv_objdetect.2.1.dylib 
opencv/lib/libopencv_contrib.2.1.dylib


     install_name_tool -change libopencv_features2d.2.1.dylib 
`pwd`/opencv/lib/libopencv_features2d.2.1.dylib 
opencv/lib/libopencv_features2d.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_features2d.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_features2d.2.1.dylib
     install_name_tool -change libopencv_calib3d.2.1.dylib 
`pwd`/opencv/lib/libopencv_calib3d.2.1.dylib 
opencv/lib/libopencv_features2d.2.1.dylib
     install_name_tool -change libopencv_highgui.2.1.dylib 
`pwd`/opencv/lib/libopencv_highgui.2.1.dylib 
opencv/lib/libopencv_features2d.2.1.dylib


     install_name_tool -change libopencv_highgui.2.1.dylib 
`pwd`/opencv/lib/libopencv_highgui.2.1.dylib 
opencv/lib/libopencv_highgui.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_highgui.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_highgui.2.1.dylib


     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_imgproc.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_imgproc.2.1.dylib


     install_name_tool -change libopencv_legacy.2.1.dylib 
`pwd`/opencv/lib/libopencv_legacy.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -change libopencv_calib3d.2.1.dylib 
`pwd`/opencv/lib/libopencv_calib3d.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -change libopencv_features2d.2.1.dylib 
`pwd`/opencv/lib/libopencv_features2d.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -change libopencv_highgui.2.1.dylib 
`pwd`/opencv/lib/libopencv_highgui.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib
     install_name_tool -change libopencv_video.2.1.dylib 
`pwd`/opencv/lib/libopencv_video.2.1.dylib 
opencv/lib/libopencv_legacy.2.1.dylib


     install_name_tool -change libopencv_ml.2.1.dylib 
`pwd`/opencv/lib/libopencv_ml.2.1.dylib opencv/lib/libopencv_ml.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib opencv/lib/libopencv_ml.2.1.dylib


     install_name_tool -change libopencv_objdetect.2.1.dylib 
`pwd`/opencv/lib/libopencv_objdetect.2.1.dylib 
opencv/lib/libopencv_objdetect.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_objdetect.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_objdetect.2.1.dylib


     install_name_tool -change libopencv_video.2.1.dylib 
`pwd`/opencv/lib/libopencv_video.2.1.dylib 
opencv/lib/libopencv_video.2.1.dylib
     install_name_tool -change libopencv_core.2.1.dylib 
`pwd`/opencv/lib/libopencv_core.2.1.dylib 
opencv/lib/libopencv_video.2.1.dylib
     install_name_tool -change libopencv_imgproc.2.1.dylib 
`pwd`/opencv/lib/libopencv_imgproc.2.1.dylib 
opencv/lib/libopencv_video.2.1.dylib



     echo "Install names have been changed in opencv/lib/*.dylib files"
fi