हैलो मैं थ्रेडिंग लाइब्रेरी का उपयोग करने के लिए बढ़ावा देने के साथ लिंक करने का प्रयास कर रहा हूं, लेकिन इसे बनाने के लिए प्रतीत नहीं होता है।बूस्ट के साथ लिंक (होमब्रू) मैक सी ++
मैंने होमब्रू (मैक पैकेज इंस्टॉलर) के साथ बढ़ावा स्थापित किया है और यह /usr/local/Cellar/boost/1.50.0
निर्देशिका में है।
मेरा मुख्य फ़ाइल अभी बहुत सरल है ...
#include <iostream>
#include <boost/thread.hpp>
मेरे मेकअप फ़ाइल इस तरह है:
CC = g++
BASE_FLAGS = -m32 -wAll
# INCLUDE BASE DIRECTORY AND BOOST DIRECTORY FOR HEADERS
LDFLAGS = -I/usr/local/Cellar/boost/1.50.0/include -I/opt/local/include
# INCLUDE BASE DIRECTORY AND BOOST DIRECTORY FOR LIB FILES
LLIBFLAGS = -L/usr/local/Cellar/boost/1.50.0/
# SPECIFIY LINK OPTIONS
LINKFLAGS = -l boost_thread-mt -lboost_system
# FINAL FLAGS -- TO BE USED THROUGHOUT
FLAGS = $(BASE_FLAGS) $(LLIBFLAGS) $(LDFLAGS) $(LINKFLAGS)
# NOTE FOR BOOST -- YOU ONLY NEED TO INCLUDE THE PATH BECAUSE IT ONLY INSTALLS HEADER FILES
main: main.cpp
$(CC) $(FLAGS) -o main.out main.cpp
और जब मैं इस चलाने के लिए, मैं एक पुस्तकालय मिल boost_system के लिए नहीं मिला । अगर मैं boost_system बाहर ले, तो मैं एक त्रुटि है कि इस तरह दिखता है मिलती है:
ld: warning: ignoring file /usr/local/lib/libboost_thread-mt.dylib, file was built for unsupported file format (0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0) which is not the architecture being linked (i386): /usr/local/lib/libboost_thread-mt.dylib
Undefined symbols for architecture i386:
"boost::system::system_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccKwJWzr.o
"boost::system::generic_category()", referenced from:
__static_initialization_and_destruction_0(int, int)in ccKwJWzr.o
ld: symbol(s) not found for architecture i386
collect2: ld returned 1 exit status
make: *** [main] Error 1
क्यों तुम्हारे बिना '-mt' प्रत्यय और एक के साथ एक फ़ाइल लिंक कर रहे हैं? '-lboost_thread -lboost_system' या' -lboost_thread-mt -lboost_system-mt' –
हैलो, जब मैं सिर्फ -lboost_thread से लिंक करता हूं तो यह मुझे ld 'ld की त्रुटि देता है: लाइब्रेरी_थ्रेड संग्रह 2 के लिए लाइब्रेरी नहीं मिली: ld 1 लौटा बाहर निकलें स्थिति ' – JonMorehouse
क्या होता है जब आप दोनों को' -mt' जोड़ते हैं? –