2012-08-17 10 views
7

जीसीसी 4.5 ने रनटाइम लाइब्रेरी (http://gcc.gnu.org/gcc-4.5/changes.html) में दशमलव फ़्लोटिंग पॉइंट्स के लिए समर्थन जोड़ा। मैं नेमस्पेस std :: दशमलव का उपयोग कर कोड को संकलित करने में सक्षम हूं, फिर कोड में दशमलव 64 का उपयोग कर रहा हूं।जीएनयू सी ++ (जी ++) में दशमलव फ़्लोटिंग पॉइंट का उपयोग कैसे करें?

दुर्भाग्यवश, मुझे कोड जोड़ने के लिए कुछ लाइब्रेरी याद आ रही है। मैं यह पता लगाने में सक्षम नहीं हूं कि कौन से पुस्तकालयों की आवश्यकता होनी चाहिए। जीएफसी (--enable-दशमलव-float = dpd) में डीएफपी समर्थन सक्षम है

इसके अतिरिक्त, कोड में दशमलव अक्षर प्रदान करने का कुछ तेज़ तरीका होना चाहिए? तेजी से, मेरा मतलब है उपयोगकर्ता परिभाषित अक्षर जो टेम्पलेट्स द्वारा संभाले जाते हैं और संकलन समय पर अनुवादित होते हैं। मैं रनटाइम पर परिवर्तित होने वाले युगल प्रदान नहीं करना चाहता हूं (प्रदर्शन के बावजूद और तथ्य यह है कि मैं वास्तव में संकलन समय से रनटाइम तक चलने वाले मूल्यांकनों को खड़ा नहीं कर सकता हूं, फिर भी समस्याएं हैं ...)। मुझे पहले से ही प्रत्यय "डीएफ" मिला है लेकिन ऐसा लगता है कि संकलक द्वारा मान्यता प्राप्त नहीं है।

मैं लक्ष्य powerpc-ibm-aix7.1.0.0 पर gcc संस्करण 4.7.1 का उपयोग कर रहा हूं।

लिंकर त्रुटि संदेश:

ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsisd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsidd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatsitd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_mulsd3 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_muldd3 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_multd3 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdisd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdisd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatdidd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsdidd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatditd 
ld: 0711-317 ERROR: Undefined symbol: .__dpd_floatunsditd 

TIA।

+0

'_Decimal64' के लिए शाब्दिक प्रत्यय' dd' ('df'' _Decimal32' के लिए है) है, लेकिन यह संकलक को समझाता नहीं है कि बाद वाले को पहचान नहीं है (डीपीडी दिनचर्या का उल्लेख नहीं किया गया है)। क्या आपने कंपाइलर को '--enable-version-specific-runtime-libs' पास करने का प्रयास किया था? –

+0

क्या आप वास्तव में संकलक को उस विकल्प को पारित करने का मतलब रखते थे? यह पहचाना नहीं गया है। "g ++ -v" दिखाता है कि संकलक स्वयं निर्दिष्ट विकल्प के साथ कॉन्फ़िगर किया गया है। – user1034081

उत्तर

1

मैंने हाल ही में स्रोत से gcc4.7.1 संकलित किया है और गायब प्रतीक __floatunsidff में परेशानी थी। यह libstdC++ द्वारा आवश्यक प्रतीक बन गया। इसलिए libgcc_s.so में परिभाषित किया गया। यह देखते हुए कि दोनों पुस्तकालय जीसीसी द्वारा प्रदान किए जाते हैं, उन्हें संगत होना चाहिए। मेरे मामले में मेरे पास अभी भी एक लिंकर था libgcc_s के पुराने संस्करण में शामिल है जिसे मैं अपने लक्षित प्लेटफ़ॉर्म से हटा दूंगा। इसकी शायद

# to find out where libstdc++.so is: 
gcc -print-file-name=libstdc++.so 

# see if it references the symbol you're missing 
readelf -a "path to libstdc++.so" | grep "symbol name" 

कर और फिर उसी कर अगर वे दोनों प्रतीक आप याद कर रहे हैं परिभाषित libgcc_s को देखने के लिए लायक। एनबी एक प्रतीक को अपरिभाषित के रूप में चिह्नित करेगा - यह कि लिंकर को इसकी आवश्यकता कैसे पता है।

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