-Lgfortran नहीं ढूँढ सकता


12

मैं आर (पैकेज "केएस") में एक पैकेज स्थापित करने की कोशिश कर रहा हूं। यह त्रुटि संदेश के साथ विफल रहता है:

/usr/bin/ld: cannot find -lgfortran

मैंने पहले ही उबंटू पैकेज बिल्ड-एसेंशियल इंस्टॉल किया है:

sudo apt-get install build-essential

मैंने प्रतीकात्मक लिंक जोड़ने की भी कोशिश की है:

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/libgfortran.so.3.0.0 /usr/lib/libgfortran.so
sudo ldconfig

मैं नियमित रूप से जीसीसी और जी ++ का उपयोग करता हूं, लेकिन अभी तक गैफरान का उपयोग करने का कारण नहीं है।

मैंने दूसरों को gcc-4.7 ( http://ubuntuforums.org/showthread.php?t=2123821 ) पर इस समस्या के साथ देखा है , इसलिए मुझे आश्चर्य है कि अगर यह मैन्युअल रूप से gcc-4.7 को स्थापित करने से है। मैं स्वीकार किए जाते हैं जवाब यहाँ से नुस्खा पीछा यहाँ और यहाँ यहाँ

रनिंग lsb_release -aप्रिंट

Ubuntu 12.04.2 LTS

और uname -rप्रिंट चल रहा है

3.2.0-39-सामान्य-पीएई

क्या कोई ldकाम नहीं करने के लिए सलाह दे सकता है ?


1
आपने रनटाइम लाइब्रेरीज़ के खिलाफ प्रतीकात्मक संबंध बनाने की कोशिश की , न कि वे जो लिंकर चाहते हैं (* .a देव लिबास)। पथ मुद्दा लगता है।
बेर्टिस कैनिकोव्स

जवाबों:


5

आपको गफ़रान इंस्टॉल करने की आवश्यकता है। त्रुटि बताती है कि बिल्ड-टाइम लिंकिंग के लिए स्थिर लिबास वह डायनेमिक लिबास नहीं है जो आपने समायोजित करने की कोशिश की थी।


जब मैं कोशिश करता हूं sudo apt-get install gfortran, मुझे मिलता है 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.... कोई विचार?
उपयोगकर्ता

खैर, मेरे सिस्टम पर मुझे dpkg -S /usr/lib/gcc/x86)64-linux-gnu/4.6/libgfortran.aइस जवाब के लिए मिलता है कि यह gfortran-4.6पैकेज से है। Gcc .a फ़ाइल की तलाश में है। यदि आपने एक और gcc संस्करण स्थापित किया है, तो linker libgfortran.a के लिए समान नाम वाली निर्देशिका के अंदर देख रहा है।
rfindeis

एक वैध उत्तर की तरह लगता है।
बेन्स कैनिकोव्स

4.7 कंपाइलर के लिए 4.6 लाइब्रेरी को जोड़ने वाला सिंबोलिक काम कर सकता है। इसके अलावा -L(जो काफी हद तक समान है) के साथ सही रास्ता गुजर रहा है। यदि यह विफल रहता है तो आपको gpa के 4.7 संस्करण को ppa से स्थापित करने की आवश्यकता है जो आपने gcc 4.7 के लिए उपयोग किया था। अब आपके पास क्या गैफरान संस्करण है?
rfindeis

मुझे gfortran-4.7 को स्थापित करने के लिए gcc-4.7 को स्थापित करने के समान चाल का उपयोग करने की आवश्यकता है।
उपयोगकर्ता

9

क्लाउड ओलिवर के उत्तर के बारे में थोड़ा और स्पष्टीकरण।

इस कमांड के माध्यम से वर्तमान में उपयोग किए जा रहे gcc संस्करण का पता लगाएं।

$sudo update-alternatives --config gcc

* 2            /usr/bin/gcc-4.7   60        manual mode

प्रवेश के साथ *बताता है कि GCC के किस संस्करण का उपयोग किया जा रहा है। वर्तमान सेटिंग्स रखने के लिए बस एन्टर प्रेस करें।

यदि यह "gcc के लिए कोई विकल्प नहीं" प्रिंट करता है, तो आपको संस्करण का पता लगाने के लिए इस कमांड का उपयोग करना पड़ सकता है:

apt-cache policy gcc
  1. cd सही gcc निर्देशिका के लिए (संस्करण संख्या को अपने साथ बदलें):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. आप libgfortran.aनिम्न आदेश (वैकल्पिक) के साथ खोज सकते हैं । मेरे मामले में यह /usr/lib/gcc/x86_64-linux-gnu/4.8/निर्देशिका में मौजूद था ।

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. सिमलिंक बनाएँ:

    sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
    

7

मैंने क्या किया, मैं ubuntu पर जांचता हूं कि क्या जी ++, जीसीसी और जी के संस्करण समान हैं या नहीं।

मुझे लगता है कि अगर आपके पास एक ही संस्करण के तीनों हैं तो बेहतर है।

# first check the versions:
gcc --version
g++ --version
gfortran --version

# If versions are different, then install:
sudo apt-get update
apt-get install gcc-4.9 g++-4.9 gfortran-4.9

मेरे लिए इसने उन सभी मुद्दों को हल कर दिया, जो मैं उबंटू में RStudio का उपयोग करके आर में "टीटीआर" पैकेज स्थापित करते समय सामना कर रहा था।


1
यह सही उपाय है। उपरोक्त समाधानों में से किसी ने भी मेरे लिए काम नहीं किया
योनटन सिमसन

1
मैं gcc 6.5 पर हूं, लेकिन उन्हीं तरीकों ने इस मुद्दे को हल कर दिया है। दिलचस्प है, एक ही स्रोत: एक अस्पष्ट आर पैकेज।
उफ़ोस

हां, यह एक सबसे अच्छा समाधान था जिसके बारे में मैं सोच सकता था।
मनोज कुमार

4

समाधान:

cd /usr/lib/gcc/x86_64-linux-gnu/4.6
sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a

आप इसे थोड़ा और क्रिया कर सकते हैं? शायद एक अलग cdलाइन कम से कम?
वोल्कर सीगल

2
कृपया एक स्पष्टीकरण जोड़ें। लोगों को कभी भी आँख बंद करके इंटरनेट पर मिलने वाली कमांड को नहीं चलाना चाहिए। तो कृपया उन्हें भी न लिखें।
s3lph

धन्यवाद, इसने मेरे लिए इसे हल किया! मेरे मामले में यह था cd /usr/lib/gcc/x86_64-linux-gnu/4.9.3और तब sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
Zhubarb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.