2013-10-27 7 views
7

मैं x86_64/उबंटू 13.04 पर रास्पबेरी पीआई प्रोजेक्ट को संकलित कर रहा हूं। साथ cmake लागू करने के बाद:x86_64 पर रास्पबेरी पीआई प्रोजेक्ट संकलित कैसे करें? (अनुपलब्ध * .so अमान्य पथ के कारण)

cmake -DCMAKE_TOOLCHAIN_FILE=./Toolchain-raspberry.pi . 

और फिर बनाने, जोड़ने में विफल रहता है:

/opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++  CMakeFiles/Watson.dir/main.cpp.o -o Watson -rdynamic -lopencv_gpu -lopencv_contrib -lopencv_legacy -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_video -lopencv_highgui -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core 
:

/opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../lib/gcc/arm-linux-gnueabihf/4.7.2/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lopencv_gpu 
... 

समस्या यह है कि cmake उत्पन्न Makefile निम्नलिखित तरीके से लिंकर का आह्वान है

और यह उन शेयरों के पथ निर्दिष्ट नहीं करता है डी पुस्तकालयों। हालांकि, अगर मैं मैन्युअल रूप से --sysroot/opt/rpi-rootfs/ उपरोक्त आदेश पर ध्वज जोड़ता हूं, तो सफलताओं को जोड़ता हूं।

संकलन पार करते समय साझा पुस्तकालयों के सही पथ निर्दिष्ट करने के लिए cmake प्राप्त करने का अनुशंसित तरीका क्या है?

यहाँ मेरी Toolchain-raspberry.pi फ़ाइल है:

SET(CMAKE_SYSTEM_NAME Linux) 
SET(CMAKE_SYSTEM_VERSION 1) 

SET(CMAKE_C_COMPILER /opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc) 
SET(CMAKE_CXX_COMPILER /opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++) 

SET(CMAKE_FIND_ROOT_PATH "/opt/rpi-rootfs/") 
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) 
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) 
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) 

और ये मेरे CMakeList.txt फ़ाइल है:

cmake_minimum_required(VERSION 2.8) 

project(watson) 
add_executable(Watson main.cpp) 

find_package(OpenCV REQUIRED) 
target_link_libraries(Watson ${OpenCV_LIBS}) 

/usr और/lib निर्देशिकाओं से लक्ष्य rsync'ed/opt/rpi-rootfs/और सभी जरूरी * .so फाइलें हैं। सेमेक प्रलेखन पढ़ने के बाद, मुझे उम्मीद थी कि सेटिंग CMAKE_FIND_ROOT_PATH इस समस्या को हल करेगी, लेकिन स्पष्ट रूप से नहीं। मैं सेमीके संस्करण 2.8.10.1 का उपयोग कर रहा हूं।

+0

आप [Buildroot] (http://buildroot.uclibc.org/) या [OpenEmbedded] (http का उपयोग करने की कोशिश की है: // www .openembedded.org/wiki/Main_Page)? जहां तक ​​मैं देख सकता हूं कि आप डेबियन (कम से कम आरपीआई पर) का उपयोग कर रहे हैं, क्या आपने [xapt stuff] (https://wiki.debian.org/EmdebianToolchain) देखा है? – yegorich

+0

बीआर उदाहरण/छवि के लिए यह [ब्लॉग] (http://blog.galemin.com/tag/opencv/) देखें। – yegorich

+0

क्या आप समस्या को हल करने में सक्षम हैं? –

उत्तर

0

मेरी अभ्यास करके,

INCLUDE_DIRECTORIES(/opt/rpi-rootfs/usr/include) 
LINK_DIRECTORIES(
    /opt/rpi-rootfs/usr/lib 
    /opt/rpi-rootfs/lib 
) 

काम करेंगे

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