[ros-users] compiling opencv on snow leopard

Nicholas Butko nbutko at ucsd.edu
Sun Jul 18 06:50:26 UTC 2010


It sounds like it's complaining that your current version of Python is not compiled for 64-bit. Try 

ls -l /Library/Frameworks/Python.Framework/Python

It's possible that this points to something like /opt/local/Library/Frameworks/Python.framework/Versions/2.5/Python -- if you built this with macports before you switched to 10.6, it will still be compiled in 32-bit and not 64-bit. You can double check this with

lipo -info /Library/Frameworks/Python.framework/Python

If Python this only contains i386, you may need to get macports to rebuild Python. In fact, you will probably want to rebuild all of your ports.

I'm not sure how ROS handles building OpenCV by default, but in my experience, installing from SVN is the best bet. Macports is way behind, and there are many critical bugs that are fixed in the SVN version that aren't in macports.

Hope this helps.

--Nick


On Jul 17, 2010, at 12:58 PM, Dan Lazewatsky wrote:

> I decided to revisit getting opencv running on snow leopard and am now  
> running up against a different problem:
> Linking CXX shared library ../../lib/cv.so
> ld: warning: in /Library/Frameworks//Python.framework/Python, missing  
> required architecture x86_64 in file
> 
> A bit of digging found that adding -arch x86_64 to the LDFLAGS line in  
> the makefile might help, but I don't know how to achieve that in the  
> ROS build environment.
> (http://modpython.org/pipermail/mod_python/2007-October/024394.html)
> 
> Thanks,
> -Dan
> 
> On May 16, 2010, at 7:35 PM, Nicholas Butko wrote:
> 
>> The build is complaining that you don't have the old quicktime video  
>> capture libraries, which is expected, because they were never ported  
>> by Apple to 64-bit architectures (OSX 10.6 uses 64-bit by default).
>> 
>> My understanding is that OpenCV 2.1 uses the new Apple video capture  
>> libraries, but that MacPorts has still not updated the portfile to  
>> use the new version. Hopefully this will happen very soon.
>> 
>> --Nick
>> 
>> 
>> On May 16, 2010, at 4:04 PM, Dan Lazewatsky wrote:
>> 
>>> I just upgraded to snow leopard and have been having trouble  
>>> rosmaking
>>> opencv. I've seen some discussions of this problem on various message
>>> boards, but no solutions. Any ideas?
>>> 
>>> $ rosmake vision_opencv
>>> [ rosmake ] Packages requested are: ['vision_opencv']
>>> [ rosmake ] Logging to directory
>>> [ rosmake ] /Users/dlaz/.ros/rosmake/rosmake_output-20100516-175954
>>> [ rosmake ] Expanded args ['vision_opencv'] to:
>>> ['opencv_tests', 'opencv2', 'image_geometry', 'cv_bridge']
>>> [ rosmake ] Checking rosdeps compliance for packages vision_opencv.
>>> This may take a few seconds.
>>> [ rosmake ] rosdep check passed all system dependencies in packages
>>> [ rosmake ] Prebuilding rospack
>>> [ rosmake ] Prebuilding gtest
>>> [ rosmake ] Prebuilding genmsg_cpp
>>> [ rosmake ] [ 2 of 23  Completed ]
>>> [rosmake-0] >>> opencv2 >>> [ make ]
>>> [ rosmake ] [ 2 of 23  Completed ]
>>> [rosmake-1] >>> roslib >>> [ make ]
>>> [ rosmake ] Last 40 lines
>>> {-------------------------------------------------------------------------------
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:516: error: 'GetGWorldPixMap' was not declared  
>>> in
>>> this scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:517: error: 'LockPixels' was not declared in  
>>> this
>>> scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:518: error: 'GetPixBaseAddr' was not declared in
>>> this scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:518: error: 'GetPixRowBytes' was not declared in
>>> this scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:524: error: 'UnlockPixels' was not declared in
>>> this scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp: At global scope:
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:557: error: 'SeqGrabComponent' does not name a  
>>> type
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:558: error: 'SGChannel' does not name a type
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:561: error: 'ImageSequence' does not name a type
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp: In function 'CvCapture_QT_Cam*
>>> icvCaptureFromCam_QT(int)':
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:591: error: 'EnterMovies' was not declared in
>>> this scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp: At global scope:
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: 'SGChannel' was not declared in this
>>> scope
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> 'raw_data'
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> 'long'
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> 'long'
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> 'long'
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> ',' token
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> 'short'
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: expected primary-expression before
>>> 'long'
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: error: initializer expression list treated
>>> as compound expression
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:855: error: expected ',' or ';' before '{' token
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:239: warning: 'int
>>> icvClose_QT_Movie(CvCapture_QT_Movie*)' defined but not used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:262: warning: 'double
>>> icvGetProperty_QT_Movie(CvCapture_QT_Movie*, int)' defined but not  
>>> used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:329: warning: 'int
>>> icvSetProperty_QT_Movie(CvCapture_QT_Movie*, int, double)' defined  
>>> but
>>> not used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:439: warning: 'int
>>> icvGrabFrame_QT_Movie(CvCapture_QT_Movie*)' defined but not used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:482: warning: 'const void*
>>> icvRetrieveFrame_QT_Movie(CvCapture_QT_Movie*, int)' defined but not
>>> used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:99: warning: 'CvCapture_QT_Movie*
>>> icvCaptureFromFile_QT(const char*)' defined but not used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:573: warning: 'int
>>> icvOpenCamera_QT(CvCapture_QT_Cam*, int)' declared 'static' but never
>>> defined
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:574: warning: 'int
>>> icvClose_QT_Cam(CvCapture_QT_Cam*)' declared 'static' but never  
>>> defined
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:610: warning: 'double
>>> icvGetProperty_QT_Cam(CvCapture_QT_Cam*, int)' defined but not used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:617: warning: 'int
>>> icvSetProperty_QT_Cam(CvCapture_QT_Cam*, int, double)' defined but  
>>> not
>>> used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:577: warning: 'int
>>> icvGrabFrame_QT_Cam(CvCapture_QT_Cam*)' declared 'static' but never
>>> defined
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:578: warning: 'const void*
>>> icvRetrieveFrame_QT_Cam(CvCapture_QT_Cam*, int)' declared 'static'  
>>> but
>>> never defined
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:587: warning: 'CvCapture_QT_Cam*
>>> icvCaptureFromCam_QT(int)' defined but not used
>>> /Users/dlaz/ros/stacks/vision_opencv/opencv2/build/opencv-svn/src/
>>> highgui/cvcap_qt.cpp:854: warning: 'icvDataProc_QT_Cam' defined but
>>> not used
>>> make[3]: *** [src/highgui/CMakeFiles/highgui.dir/cvcap_qt.o] Error 1
>>> make[2]: *** [src/highgui/CMakeFiles/highgui.dir/all] Error 2
>>> make[1]: *** [all] Error 2
>>> -------------------------------------------------------------------------------}
>>> [ rosmake ] Output from build of package opencv2 written to:
>>> [ rosmake ]    /Users/dlaz/.ros/rosmake/ 
>>> rosmake_output-20100516-175954/
>>> opencv2/build_output.log
>>> [rosmake-0] <<< opencv2 <<< [FAIL] [ 6.91 seconds ]
>>> [ rosmake ] Halting due to failure in package opencv2.
>>> [ rosmake ] Waiting for other threads to complete.
>>> [rosmake-1] <<< roslib <<< [PASS] [ 2.75 seconds ]
>>> [ rosmake ] All builds and tests did not pass cannot mark packages as
>>> installed.
>>> [ rosmake ] Summary output to directory
>>> [ rosmake ] /Users/dlaz/.ros/rosmake/rosmake_output-20100516-175954
>>> 
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users at code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>> 
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
> 
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users




More information about the ros-users mailing list