2017-02-25 13 views
6

मैं CUDA 8 के साथ opencv 3.2 निर्माण करना चाहते हैं उत्पन्न करता है और मैं अपने लिनक्स प्रणाली है जो सफलतापूर्वक मैं cmake साथ makefiles पैदा करने के बाद एक Debian 9 testing (stretch) 4.9.0-1-amd64 है में CUDA के लिए सभी आवश्यक पुस्तकालयों स्थापित किया है कमांड निष्पादित करके एकाधिक परिभाषा लिंकेज त्रुटि। मैंने सेमेक के साथ कई कॉन्फ़िगरेशन की कोशिश की है और मैंने कई फ़ोरम में लगभग सभी संबंधित मुद्दों की जांच की है लेकिन मुझे कोई समाधान नहीं मिला। जीसीसी-5 के लिए cmake में, मैं बदल गया है CUDA संकलक के बाद से CUDA 8 संस्करण 5 से कोई बाद में जीसीसी संकलक की जरूरत है और डिफ़ॉल्ट जीसीसी संकलक संस्करण 6.3 है यहाँ मेरी cmake विन्यास उत्पादन होता है:OpenCV स्रोत CUDA के साथ संकलन कई पारिभाषिक कड़ी त्रुटि

OpenCV modules: 
    To be built:     cudev core cudaarithm flann imgproc ml video cudabgsegm cudafilters cudaimgproc cudawarping imgcodecs photo shape videoio cudacodec highgui objdetect ts features2d calib3d cudafeatures2d cudalegacy cudaobjdetect cudaoptflow cudastereo java stitching superres videostab python2 python3 
    Disabled:     world 
    Disabled by dependency:  - 
    Unavailable:     viz 

    GUI: 
    QT 5.x:      YES (ver 5.7.1) 
    QT OpenGL support:   YES (Qt5::OpenGL 5.7.1) 
    OpenGL support:    YES (/usr/lib/x86_64-linux-gnu/libGLU.so /usr/lib/x86_64-linux-gnu/libGL.so) 
    VTK support:     NO 

    Media I/O: 
    ZLib:      /usr/lib/x86_64-linux-gnu/libz.so (ver 1.2.8) 
    JPEG:      /usr/lib/x86_64-linux-gnu/libjpeg.so (ver) 
    WEBP:      build (ver encoder: 0x020e) 
    PNG:       /usr/lib/x86_64-linux-gnu/libpng.so (ver 1.6.28) 
    TIFF:      /usr/lib/x86_64-linux-gnu/libtiff.so (ver 42 - 4.0.7) 
    JPEG 2000:     /usr/lib/x86_64-linux-gnu/libjasper.so (ver 1.900.1) 
    OpenEXR:      /usr/lib/x86_64-linux-gnu/libImath.so /usr/lib/x86_64-linux-gnu/libIlmImf.so /usr/lib/x86_64-linux-gnu/libIex.so /usr/lib/x86_64-linux-gnu/libHalf.so /usr/lib/x86_64-linux-gnu/libIlmThread.so (ver 2.2.0) 
    GDAL:      NO 
    GDCM:      NO 

    Video I/O: 
    DC1394 1.x:     NO 
    DC1394 2.x:     YES (ver 2.2.5) 
    FFMPEG:      YES 
     avcodec:     YES (ver 57.64.101) 
     avformat:     YES (ver 57.56.101) 
     avutil:     YES (ver 55.34.101) 
     swscale:     YES (ver 4.2.100) 
     avresample:    YES (ver 3.1.0) 
    GStreamer:     NO 
    OpenNI:      NO 
    OpenNI PrimeSensor Modules: NO 
    OpenNI2:      NO 
    PvAPI:      NO 
    GigEVisionSDK:    NO 
    Aravis SDK:     NO 
    UniCap:      NO 
    UniCap ucil:     NO 
    V4L/V4L2:     NO/YES 
    XIMEA:      NO 
    Xine:      NO 
    gPhoto2:      YES 

    Parallel framework:   TBB (ver 4.3 interface 8006) 

    Other third-party libraries: 
    Use IPP:      9.0.1 [9.0.1] 
     at:      /home/user/opencv_build/3rdparty/ippicv/ippicv_lnx 
    Use IPP Async:    NO 
    Use VA:      NO 
    Use Intel VA-API/OpenCL:  NO 
    Use Lapack:     NO 
    Use Eigen:     YES (ver 3.3.2) 
    Use Cuda:     YES (ver 8.0) 
    Use OpenCL:     YES 
    Use OpenVX:     NO 
    Use custom HAL:    NO 

    NVIDIA CUDA 
    Use CUFFT:     YES 
    Use CUBLAS:     YES 
    USE NVCUVID:     NO 
    NVIDIA GPU arch:    20 30 35 37 50 52 60 61 
    NVIDIA PTX archs: 
    Use fast math:    YES 

    OpenCL:      <Dynamic loading of OpenCL library> 
    Include path:    /home/user/git/opencv/opencv/3rdparty/include/opencl/1.2 
    Use AMDFFT:     NO 
    Use AMDBLAS:     NO 

    Python 2: 
    Interpreter:     /usr/bin/python2.7 (ver 2.7.13) 
    Libraries:     /usr/lib/x86_64-linux-gnu/libpython2.7.so (ver 2.7.13) 
    numpy:      /usr/lib/python2.7/dist-packages/numpy/core/include (ver 1.12.0) 
    packages path:    lib/python2.7/dist-packages 

    Python 3: 
    Interpreter:     /usr/bin/python3 (ver 3.5.3) 
    Libraries:     /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.3) 
    numpy:      /usr/lib/python3/dist-packages/numpy/core/include (ver 1.12.0) 
    packages path:    lib/python3.5/dist-packages 

    Python (for build):   /usr/bin/python2.7 

    Java: 
    ant:       /usr/bin/ant (ver 1.9.8) 
    JNI:       /usr/lib/jvm/java-8-openjdk-amd64/include /usr/lib/jvm/java-8-openjdk-amd64/include/linux /usr/lib/jvm/java-8-openjdk-amd64/include 
    Java wrappers:    YES 
    Java tests:     NO 

    Matlab:      Matlab not found or implicitly disabled 

    Documentation: 
    Doxygen:      /usr/bin/doxygen (ver 1.8.13) 

    Tests and samples: 
    Tests:      NO 
    Performance tests:   NO 
    C/C++ Examples:    YES 

    Install path:     /usr/local 

और यहाँ है मेकअप आदेश उत्पादन

[ 10%] Built target libwebp 
[ 10%] Built target opencv_cudev 
[ 14%] Built target opencv_core 
[ 14%] Linking CXX shared library ../../lib/libopencv_cudaarithm.so 
CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_absdiff_scalar.cu.o:(.bss+0xd090): multiple definition of `cv::cudev::color_cvt_detail::c_RGB2YUVCoeffs_f' 
CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_absdiff_mat.cu.o:(.bss+0xd090): first defined here 
CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_absdiff_scalar.cu.o:(.bss+0xd070): multiple definition of `cv::cudev::color_cvt_detail::c_RGB2YUVCoeffs_i' 
CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_absdiff_mat.cu.o:(.bss+0xd070): first defined here 
..... 
..... 
CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_transpose.cu.o:(.bss+0x0): multiple definition of `cv::cudev::color_cvt_detail::c_LabCbrtTab' 
CMakeFiles/cuda_compile.dir/src/cuda/cuda_compile_generated_absdiff_mat.cu.o:(.bss+0x0): first defined here 
collect2: error: ld returned 1 exit status 
modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/build.make:11685: recipe for target 'lib/libopencv_cudaarithm.so.3.2.0' failed 
make[2]: *** [lib/libopencv_cudaarithm.so.3.2.0] Error 1 
CMakeFiles/Makefile2:1204: recipe for target 'modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/all' failed 
make[1]: *** [modules/cudaarithm/CMakeFiles/opencv_cudaarithm.dir/all] Error 2 
Makefile:160: recipe for target 'all' failed 
make: *** [all] Error 2 
+0

आप कड़वाहट का निर्माण क्यों करना चाहते हैं, यह कुछ समय के लिए परेशान रहा है – Sarvex

+0

दुर्भाग्यवश कड़वाहट को चुनने से समस्या हल नहीं होती है। अभी तक कई परिभाषा लिंक त्रुटियां हैं। – AMCoded

+0

डिबगिंग – Sarvex

उत्तर

1

मैं अध्ययन कई समाधान है और अंत में मैं डेबियन 9. में Cuda 8 के साथ OpenCV 3.2 निर्माण करने के लिए इस समाधान के साथ कई अनुत्तरित whys रहे हैं एक समाधान के साथ आया था लेकिन यह वास्तव में काम करता है:

1-आप जीसीसी की जरूरत है कंपाइलर संस्करण 5.1 से 5.x।

2-आप जी ++ के लिए बराबर संकलक संस्करणों स्थापित करना चाहिए (यदि आप अपने नए संकलक संस्करण निकालने के लिए की जरूरत नहीं है)

3-OpenCV ही जीसीसी 5.x के साथ संकलित किया जाना चाहिए ताकि आप का चयन करना चाहिए अपने जीसीसी और जी ++ संकलक CMake में मैन्युअल

4-अलग संकलन विकल्प इस प्रस्ताव

5-पूर्व संकलक विकल्प CMake (बहुत महत्वपूर्ण) से अक्षम होना चाहिए के लिए CMake से @InfinityChaos को धन्यवाद अक्षम है या नहीं

6-आप क्यूटी, ओपन सक्षम हो सकता है और OpenCL विकल्प कोई समस्या नहीं

हो जाएगा 7-आप TBB विकल्प को चिह्नित करने की जरूरत नहीं है।

+0

टीबीबी किसी भी त्रुटि का कारण नहीं है, इसका उपयोग किया जा सकता है। बस 'BUILD_TBB' का उपयोग न करें, इंटरनेट से प्रीपेड टीबीबी पैकेज प्राप्त करें, और इसे वहां सेट करें। – FadedCoder

1

ठीक है, पिछले पर एक वैकल्पिक हल पाया। (बीटीडब्ल्यू, मैं सीएमके जीयूआई का उपयोग कर रहा हूं)।

आपको सीएमके-जीयूआई विकल्पों में CUDA_SEPARABLE_COMPILATION अनचेक करना होगा।

दुर्भाग्यवश, यह केवल एक कामकाज और CUDA अलग करने योग्य संकलन का उपयोग लिनक्स में नहीं किया जा सकता है। (आपको इसके लिए विंडोज का उपयोग करना होगा)। मुझे ओपनसीवी रिपोजिटरी में एक समस्या (https://github.com/opencv/opencv/issues/5557) में मिला।

पुनश्च:

मैं Qt5 साथ OpenCV मुसीबत निर्माण हो रहा है। यदि आप ऐसा करने में सफल हैं, तो कृपया टिप्पणियों में मुझे सूचित करें। धन्यवाद!

+0

हाय, समाधान साझा करने के लिए धन्यवाद। मैंने अभी तक कोशिश नहीं की है। लेकिन CUDA के बिना मैं qt5 के साथ संकलित कर सकता था।मैं समझ नहीं पा रहा हूं कि अलग संकलन के साथ क्यों असफल होना चाहिए, क्या आप मूल समस्या लिंक पोस्ट करेंगे? क्या आपको लगता है कि सभी ओपनसीवी और सीयूडीए को जीसीसी -5 – AMCoded

+0

के साथ संकलित करने की कोशिश करने लायक है, मैंने इस मुद्दे को खोजने का प्रयास किया लेकिन इसे फिर से नहीं मिला। मैंने यही किया - सीयूडीए 8.0 जीसीसी 5+ के साथ संकलित नहीं है, इसलिए मुझे जीसीसी 4.9 इंस्टॉल करना पड़ा (मुझे इसे पुराने डेबियन जेसी से मिला), और मैंने सीयूडीए होस्ट कंपाइलर को जीसीसी 4.9 और शेष ओपनसीवी के रूप में सेट किया जीसीसी 6 – FadedCoder

+0

के साथ समस्या एटलास्ट मिला, वास्तव में समस्या अभी भी खुली है -> https://github.com/opencv/opencv/issues/5557 – FadedCoder

संबंधित मुद्दे