2012-06-21 16 views
7

से लिंक नहीं कर सकता है मैंने libboost-devapt-get के माध्यम से स्थापित किया है, और इसे /usr/lib में रखा गया है।मैंने libboost इंस्टॉल किया है लेकिन इसे

/usr/lib$ ls | grep boost 
libboost_filesystem.so.1.46.1 
libboost_iostreams.so.1.46.1 
libboost_serialization.so.1.46.1 
libboost_system.so.1.46.1 
libboost_thread.so.1.46.1 
libboost_wserialization.so.1.46.1 

लेकिन मैं अभी भी एक त्रुटि मिली जब मैं एक स्रोत boost_thread का उपयोग करता है संकलन करने की कोशिश की।

$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -llibboost_thread 
/usr/bin/ld: cannot find -lboost_thread 
collect2: ld returned 1 exit status 
$ g++ tcp_echo.cpp -o tcp_echo -L/usr/lib -lboost_thread 
/usr/bin/ld: cannot find -lboost_thread 
collect2: ld returned 1 exit status 

libboost को स्थापित करने और लिंक करने का सही तरीका क्या है?

+3

आपको '-L/usr/lib' की आवश्यकता नहीं है, यह स्वचालित रूप से लाइब्रेरी खोज पथ में जोड़ा जाता है। –

+2

क्या आपने स्थापित करने के बाद 'ldconfig' (रूट के रूप में) चलाने का प्रयास किया है? –

+1

@ जोचिमपिलबोर्ग ldconfig apt द्वारा संचालित किया जाना चाहिए, तो वह अच्छा होना चाहिए। विशेष रूप से यदि '-L' का उपयोग वैसे भी किया जाता है। – robert

उत्तर

11

एक बात मुझे पता है कि आपके पास कोई libboost_thread.so नहीं है। आपके पास संस्करण 1.46.1 फ़ाइल है लेकिन आम तौर पर पुस्तकालय अनियंत्रित नाम के साथ संस्करणित प्रतिलिपि के लिए प्रतीकात्मक लिंक बनाते हैं। यह नहीं हो सकता है लेकिन यह एक बात है जिसे मैंने देखा। (यह आमतौर पर संस्थापक द्वारा किया जाता है।) - Omaha

मुझे लगता है कि इस बिंदु है। यह दर्शाता है कि मैंने गलत तरीके से libboost स्थापित किया था। वास्तव में, मैं केवल libboost-dev स्थापित:

sudo apt-get install libboost-dev 

लेकिन क्या मुझे क्या करना चाहिए है:

sudo apt-get install libboost-dev libboost1.46-doc libboost-date-time1.46-dev ibboost-filesystem1.46-dev libboost-graph1.46-dev libboost-iostreams1.46-dev libboost-math1.46-dev libboost-program-options1.46-dev libboost-python1.46-dev libboost-random1.46-dev libboost-regex1.46-dev libboost-serialization1.46-dev libboost-signals1.46-dev libboost-system1.46-dev libboost-test1.46-dev libboost-thread1.46-dev libboost-wave1.46-dev 

(या, मेरे विशेष मामले में, स्थापित libboost-system1.46-dev libboost-thread1.46-dev कम से कम)

और तुम एक बार स्थापित उन्हें सही ढंग से और .so/usr/lib में सही ढंग से होना चाहिए।

/usr/lib$ ls | grep boost 
libboost_date_time.a 
libboost_date_time-mt.a 
libboost_date_time-mt.so 
libboost_date_time.so 
libboost_date_time.so.1.46.1 
libboost_filesystem.a 
libboost_filesystem-mt.a 
... and so on ... 
+0

यह होता था, उबंटू में उन सभी को स्थापित करने के लिए मेटा-पैकेज libboost-dev-all था। हालांकि, मुझे अब यह प्रतीत नहीं होता है।यहां एक कमांड लाइन है जो मदद कर सकती है: 'sudo apt-get इंस्टॉल करें 'apt-cache खोज libboost | grep - -dev | grep -v '[12] \। [0-9]' | अजीब '{प्रिंट $ 1; } ' –

1

टिप्पणी बॉक्स बँधा हुआ इस सुझाव के हवाले से, तो मैं के हवाले से सही पाने के लिए एक जवाब के रूप में यह पोस्टिंग कर रहा हूँ।

ऐसा होता था, उबंटू में उन सभी को स्थापित करने के लिए मेटा-पैकेज libboost-dev-all था। हालांकि, मुझे अब यह प्रतीत नहीं होता है।

sudo apt-get install `apt-cache search libboost | \ 
    grep -- -dev | \ 
    grep -v '[12]\.[0-9]' | \ 
    awk '{ print $1; }'` 

(https://github.com/imvu-open/istatd/ फ़ाइल install-boost-dev.sh से लिया)

+0

दूसरों के लिए - मुझे वास्तव में ओपी की समस्या थी, और इस आदेश ने वास्तव में इसे तुरंत हल किया। उबंटू 15.10। संयोग से, 'libboost-dev' लापता 'libboost-dev-all' का मतलब नहीं है –

2

उबंटू 16.04 में, पैकेज का नाम है:: यहाँ एक कमांड लाइन है कि मदद कर सकता है है libboost सभी-देव (libboost- नहीं dev-all)

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