2012-07-24 13 views
10

का उपयोग करते समय जब रिलीज़ मोड में अपने प्रोजेक्ट को जोड़ने मैं निम्न चेतावनी हो रही है "डुप्लिकेट अनुभाग विभिन्न आकार की है":Regex बूस्ट रिलीज़ मोड में जोड़ने पुस्तकालय ने चेतावनी दी है MinGW-W64 toolchain

myProject-libs/release/libboost_regex-mt-s-1.50.0.a(cpp_regex_traits.o): duplicate section `.data$_ZZN5boost16cpp_regex_traitsIcE21get_catalog_name_instEvE6s_name[boost::cpp_regex_traits<char>::get_catalog_name_inst()::s_name]' has different size 

मुझे लगता है कि संदेह है कारण यह हो सकता है कि बूस्ट लाइब्रेरी को मेरे प्रोजेक्ट के लिए अलग-अलग विकल्पों के साथ संकलित किया गया है, लेकिन मुझे नहीं पता कि अंतर कैसे ढूंढें (बूस्ट ने बिल्ड के दौरान इन विकल्पों को आउटपुट नहीं किया)।

आदेश Ubuntu 12.04 पर Win32 के लिए बढ़ावा संकलन करने में मैं इस प्रक्रिया का इस्तेमाल किया:

tar jxf boost_1_50_0.tar.bz2 
cd boost_1_50_0 
./bootstrap.sh 
echo "using gcc : 4.6 : i686-w64-mingw32-g++ : <rc>i686-w64-mingw32-windres <archiver>i686-w64-mingw32-ar ;" > user-config.jam 
./bjam toolset=gcc target-os=windows --address-model=32 variant=release threading=multi threadapi=win32 link=static runtime-link=static --prefix=/opt/boost_1_50_0-release-static-windows-32 --user-config=user-config.jam -j 10 --without-mpi --without-python -sNO_BZIP2=1 -sNO_ZLIB=1 --layout=tagged install 

आदेश अपने प्रोजेक्ट में फ़ाइलों को संकलित करने के लिए मैं की तरह

i686-w64-mingw32-g++ -march=corei7 -mfpmath=sse -m32 -Wall -fmessage-length=0 -I"/opt/boost_1_50_0-release-static-windows-32/include" -std=c++0x -O3 -g0 -DNDEBUG -I"myProject/src/cpp" -c -o myProject/build/release/src/cpp/myproject.o myproject/src/cpp/myproject.cpp 

कुछ परीक्षण मैं का उपयोग में इंगित करता है कि regexps ठीक चल रहा है लेकिन फिर भी मैं चेतावनी को हल करना चाहता हूं।

संपादित

मैंने पाया कि बढ़ावा संकलक करने के लिए अतिरिक्त विकल्प एक cxxflags = bjam के तर्क का उपयोग जोड़ा जा सकता है।

उदाहरण: bjam cxxflags = '- FPIC' ....

हो सकता है कि के रूप में मैं इस परियोजना के लिए कर के रूप में में सुझाव समस्या (विशेष रूप से अनुकूलन से संबंधित तर्क को हल कर सकता है एक ही तर्क पारित करने के लिए सुनिश्चित करने के जुड़ा सवाल)।

+0

आप उस कमांड लाइन के साथ लिनक्स में इतनी अच्छी तरह से बढ़ावा देने में कामयाब रहे !? पिछली बार मैंने कोशिश की कि मुझे कई घंटे लगे। मैं इसके कारण सिर्फ आपके प्रश्न को उखाड़ फेंक रहा हूं। – dsign

+1

यह वास्तव में मुझे नहीं था, बस पहले से ही भूल गए पृष्ठ से कॉपी और पेस्ट करें, लेकिन मुझे हजारों बिखरी हुई युक्तियों और चालों के बीच इतना अच्छा शॉर्ट कोड खोजने में काफी समय लगा। –

+3

मुझे विंडोज 7 64 पर mingw-w64 (gcc 4.7.1, boost 1.51.0) के साथ यह 'समस्या' भी मिली है, लेकिन mingw (gcc 4.7.0) के साथ नहीं। शायद यह mingw-w64 की समस्या है? – user573335

उत्तर

3

आपके कंपाइलर्स को विभिन्न विकल्पों के साथ संकलित किया गया था :) लिनक्स पर लाइब्रेरी को संकलित करना और विंडोज़ पर प्रोग्राम एक ऐसी स्थिति में जहां एक समान नामित डेटा डेटा है, लेकिन वे एक ही आकार के नहीं हैं। यह सैद्धांतिक रूप से दिलचस्प हो सकता है, क्योंकि डेटा सेगमेंट लिखने योग्य है, लेकिन व्यवहार में, इससे कोई फर्क नहीं पड़ता। जब तक सुझाव देने के सबूत न हों, इससे कोई समस्या नहीं होती है जिसके बारे में मुझे पता नहीं है, तो आप सुरक्षित रूप से उस चेतावनी को दबा सकते हैं; मुझे नहीं पता कि आप इसे कैसे दूर कर देंगे, हालांकि।

+2

अतीत में मैंने संभवतः कंपेलरों के थोड़ा अलग संस्करणों का उपयोग किया था, लेकिन अब मुझे यकीन है कि प्रोजेक्ट के समान ही कंपाइलर के साथ बूस्ट संकलित किया गया है और मेरे पास अभी भी चेतावनियां हैं । –

+0

मुझे पता चला है कि प्रोजेक्ट के कुछ हिस्सों को ऑप्टिमाइज़ेशन के बिना संकलित किया गया है और अन्य समस्याएं इस समस्या को ट्रिगर करती हैं, भले ही एक ही कंपाइलर का उपयोग किया जाए। – gabry

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