-Lgfortran bulunamıyor


12

R (paket "ks") bir paket yüklemeye çalışıyorum. Hata mesajı ile başarısız oluyor:

/usr/bin/ld: cannot find -lgfortran

Ubuntu paketini derhal kurduk:

sudo apt-get install build-essential

Ayrıca sembolik bağlantılar eklemeyi denedim:

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

Düzenli olarak gcc ve g ++ kullanıyorum, ancak gfortran kullanmak için henüz bir nedenim olmadı.

Ben gcc-4.7 ( http://ubuntuforums.org/showthread.php?t=2123821 ) bu sorunu olan başkaları gördüm , bu yüzden bunun elle gcc-4.7 yüklemek olup olmadığını merak ediyorum. Burada kabul edilen cevabını tarifi izledi burada ve burada burada .

Çalışan lsb_release -abaskılar

Ubuntu 12.04.2 LTS

ve çalışan uname -rbaskılar

3.2.0-39-jenerik-pae

Neden ldişe yaramadığına dair herhangi bir tavsiye verebilir mi?


1
Bağlayıcının istediklerini değil, çalışma zamanı kitaplıklarına karşı sembolik bağlantılar oluşturmaya çalıştınız (* .a dev libs). Yol sorunu gibi görünüyor.
— Andrejs Cainikovs

Yanıtlar:


5

Gfortran yüklemeniz gerekiyor. Hata, oluşturmaya çalıştığınız dinamik kütüphanelerin oluşturma zamanı bağlama için statik lib eksik olduğunu gösterir.


Ben çalıştığımda sudo apt-get install gfortran, benim hemen 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.... herhangi bir düşünce?
— kullanıcı

Sistemimde dpkg -S /usr/lib/gcc/x86)64-linux-gnu/4.6/libgfortran.abunun gfortran-4.6paketten geldiğine dair bir cevap alıyorum . Gcc .a dosyasını arıyor. Başka bir gcc sürümü yüklediyseniz, bağlayıcı libgfortran.a için benzer şekilde adlandırılmış bir dizinin içine bakar.
— rfindeis

Geçerli bir cevap gibi görünüyor.
— Andrejs Cainikovs

4.7 derleyicisinin 4.6 kitaplığını sembolik olarak bağlamak işe yarayabilir. Ayrıca -L(büyük ölçüde aynı olan) ile doğru yolu geçmek . Bu başarısız olursa gcc 4.7 için kullandığınız ppa'dan gfortran'ın 4.7 sürümünü yüklemeniz gerekir. Şu an hangi gfortran sürümünüz var?
— rfindeis

Gfortran-4.7'yi kurmak için gcc-4.7'yi yüklemekle aynı hileyi kullanmam gerekiyordu.
— kullanıcı

9

Cloud Oliver'ın cevabına biraz daha açıklama.

Bu komutla şu anda kullanılan gcc sürümünü öğrenin.

$sudo update-alternatives --config gcc

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

Girdi *, GCC'nin hangi sürümünün kullanıldığını gösterir. Geçerli ayarları korumak için enter tuşuna basmanız yeterlidir.

"Gcc için alternatif yok" yazarsa, sürümü bulmak için bu komutu kullanmanız gerekebilir:

apt-cache policy gcc
  1. cd sağ gcc dizinine (sürüm numarasını kendinizle değiştirin):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. libgfortran.aAşağıdaki komutla arama yapabilirsiniz (isteğe bağlı). Benim durumumda /usr/lib/gcc/x86_64-linux-gnu/4.8/dizinde mevcuttu.

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. Symlink'i oluşturun:

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

7

Ne yaptım, ubuntu üzerinde g ++, gcc ve g sürümlerinin aynı olup olmadığını kontrol ediyorum.

Aynı sürümün üçüne sahipseniz daha iyi olur sanırım.

# 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

Benim için bu Ubuntu RStudio kullanarak R "TTR" paketini yüklerken karşılaştığım tüm sorunları çözdü.


1
Bu doğru çözüm. Yukarıdaki çözümlerin hiçbiri benim için işe yaramadı
— Yonatan Simson

1
Ben gcc 6.5 kullanıyorum, ama aynı yöntemler sorunu çözdü. İlginçtir, aynı kaynak: belirsiz bir R paketi.
— Ufos

Evet, bu aklıma gelen en iyi çözümdü.
— Manoj Kumar

4

Çözüm:

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

Biraz daha ayrıntılı yapabilir misin? Belki de cden azından ayrı bir çizgi?
— Volker Siegel

2
Lütfen bir açıklama ekleyin. İnsanlar asla internette buldukları komutları körü körüne çalıştırmamalıdır. Lütfen bunları da yazmayın.
— s3lph

Teşekkür ederim, bu benim için çözdü! Benim durumumda oldu cd /usr/lib/gcc/x86_64-linux-gnu/4.9.3ve sonra sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
— Zhubarb
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.