CentOS 7: स्थापित devtoolset-7, लेकिन GCC 7.8 जीसीसी 4.8 इंस्टॉलेशन के पुराने C ++ में फ़ाइलों का उपयोग कर रहा है


0

मैं संकलित करने और स्थापित करने की कोशिश कर रहा हूं Pistache उनके निर्देशों का पालन करते हुए, एक CentOS 7 मशीन पर।

यह एक ऐसा पैकेज है जिसके लिए C ++ 11 की आवश्यकता होती है, इसलिए चूंकि CentOS 7 पर डेवलपमेंट टूल्स पैकेज gcc (4.8.3) का एक पुराना संस्करण स्थापित करता है जो C ++ 11 सुविधाओं का समर्थन नहीं करता है, मैंने डेवलेसेट -7 स्थापित किया है और इसे सक्षम किया scl enable devtoolset-7 bash। यह ठीक से कार्य करता प्रतीत होता है, जैसा कि gcc --version प्रदर्शित करता है gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

हालांकि, जब मैं कोशिश करता हूं make पिस्ता के स्रोत, मुझे यह संकलन त्रुटि मिली:

/root/compiler_installation_script/pistache/src/server/router.cc:102:45: error: no matching function for call to ‘regex_replace(const string&, std::regex&, const char [2])’
     SegmentTreeNode::multiple_slash, "/");
                                         ^
 /root/compiler_installation_script/pistache/src/server/router.cc:102:45: note: candidates are:
 In file included from /usr/include/c++/4.8.2/regex:62:0,

जब तक मैं गलत नहीं समझ रहा हूँ, यह इंगित करता है कि मेरे संकलक पुराने C ++ का उपयोग कर रहे हैं जिसमें हेडर शामिल हैं जो gcc 4.8.3 के साथ संगत हैं, जिसके परिणामस्वरूप त्रुटि हुई है। मैं इसे कैसे ठीक करूं?

नोट: मुझे यकीन है कि समस्या पिस्ता के स्रोत के साथ नहीं है, क्योंकि मैंने कल एक ताजा CentOS 7 मशीन सहित अन्य मशीनों पर इसे सफलतापूर्वक संकलित किया है।

जवाबों:


0

पता लगा लिया। cmake gcc / g ++ के पुराने संस्करण का उपयोग कर रहा था, न कि मेरे कमांड लाइन को उठा रहा था जब मैं भागा था gcc या g++ खुद। इसलिए, मुझे cmake चलाने से पहले CC और CXX को उचित रास्तों पर निर्यात करना था।

export CC=/opt/rh/devtoolset-7/root/usr/bin/gcc
export CXX=/opt/rh/devtoolset-7/root/usr/bin/g++
cmake3 -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..

पहले, मैं केवल ऊपर की अंतिम पंक्ति चला रहा था।


आपको C या C ++ कंपाइलर (CC या CXX) को निर्यात करने की आवश्यकता नहीं होनी चाहिए। मैंने अपने CentOS 7 मशीन में थोड़ी देर के लिए devtoolset-7 लिया है (मेरे पास GCC 8.2 भी है जिसे मैंने संकलित किया है) और मैंने कभी भी संकलक को निर्यात नहीं किया है क्योंकि scl devtoolset-7 bash को चलाने में सक्षम है। जब आप echo $PATH और गूंज $LD_LIBRARY_PATH, क्या आपको निष्पादन योग्य और पुस्तकालयों के लिए रास्ते मिलते हैं: /opt/rh/devtoolset-7/root/usr/bin, /opt/rh/devtoolset-7/root/usr/lib64, तथा /opt/rh/devtoolset-7/root/usr/lib?
Nasir Riley

जब मैं $ PATH और $ LD_LIBRARY_PATH दोनों को प्रतिध्वनित करता हूं तो @NasirRiley Yup, devtoolset-7 पथ दिखाई दे रहे हैं। मुझे आश्चर्य है कि यदि कारण विशेष रूप से पिस्ता के सीमेक कॉन्फ़िगरेशन से संबंधित है।
Josh1billion

मैंने अभी सक्षम होने के बाद अपने CentOS 7.5 मशीन पर पिस्ता का संकलन किया devtoolset-7 उसी आदेश के साथ जिसका आपने उपयोग किया था। मैं वही चला पा रहा था cmake3 मेरे द्वारा जोड़े जाने वाले एकमात्र अंतर के साथ कमांड करें -D CMAKE_INSTALL_PREFIX= इसे कहीं और स्थापित करने के लिए। यह समाप्त हो गया और फिर मैं भाग गया make तथा make install कोई समस्या नहीं के साथ। ऐसा लगता है कि आपके पर्यावरण के साथ कुछ गड़बड़ है।
Nasir Riley

हाँ, निश्चित रूप से उस बॉक्स के लिए कुछ विशिष्ट। मैंने दूसरे दिन एक अलग, ताजा CentOS 7 मशीन के साथ एक ही कदम उठाया और इस मुद्दे का सामना नहीं किया।
Josh1billion
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.