-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.