Tidak dapat menemukan -lgfortran


12

Saya mencoba menginstal paket dalam R (paket "ks"). Gagal dengan pesan kesalahan:

/usr/bin/ld: cannot find -lgfortran

Saya sudah menginstal paket Ubuntu build-essential:

sudo apt-get install build-essential

Saya juga mencoba menambahkan tautan simbolis:

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

Saya menggunakan gcc dan g ++ secara teratur, tetapi belum memiliki alasan untuk menggunakan gfortran.

Saya telah melihat orang lain dengan masalah ini pada gcc-4.7 ( http://ubuntuforums.org/showthread.php?t=2123821 ), jadi saya ingin tahu apakah ini dari menginstal manual gcc-4.7. Saya mengikuti resep dari jawaban yang diterima di sini dan di sini .

Menjalankan lsb_release -acetakan

Ubuntu 12.04.2 LTS

dan menjalankan uname -rcetakan

3.2.0-39-generik-pae

Adakah yang bisa memberikan saran mengapa ldtidak berhasil?


1
Anda mencoba membuat tautan simbolis terhadap pustaka runtime , bukan pustaka yang diinginkan pautan (* .a lib libs). Sepertinya masalah jalur.
— Andrejs Cainikovs

Jawaban:


5

Anda perlu menginstal gfortran. Kesalahan menunjukkan bahwa lib statis untuk penautan build-time tidak ada lib dinamis yang Anda coba sesuaikan.


Ketika saya mencoba sudo apt-get install gfortran, saya mendapatkan 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.... Ada pemikiran?
— pengguna

Nah, pada sistem saya, saya mendapatkan dpkg -S /usr/lib/gcc/x86)64-linux-gnu/4.6/libgfortran.ajawaban bahwa ini dari gfortran-4.6paket. Gcc sedang mencari file .a. Jika Anda menginstal versi gcc lain, linker mencari di dalam direktori yang bernama serupa untuk libgfortran.a.
— rfindeis

Sepertinya jawaban yang valid.
— Andrejs Cainikovs

Simbol yang menghubungkan pustaka 4.6 untuk kompiler 4.7 mungkin bekerja. Juga melewati jalan yang benar dengan -L(yang sebagian besar sama). Jika gagal, Anda harus menginstal versi gfortran 4.7 dari ppa yang Anda gunakan untuk gcc 4.7. Apa versi gfortran yang Anda miliki sekarang?
— rfindeis

Saya perlu menggunakan trik yang sama seperti menginstal gcc-4.7 untuk menginstal gfortran-4.7.
— pengguna

9

Penjelasan lebih sedikit untuk jawaban Cloud Oliver.

Cari tahu versi gcc yang saat ini digunakan melalui perintah ini.

$sudo update-alternatives --config gcc

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

Entri dengan *memberitahu versi GCC mana yang digunakan. Cukup tekan enter untuk menyimpan pengaturan saat ini.

Jika mencetak "tidak ada alternatif untuk gcc", Anda mungkin harus menggunakan perintah ini untuk mengetahui versi:

apt-cache policy gcc
  1. cd ke direktori gcc kanan (ganti nomor versi dengan milikmu):

    cd /usr/lib/gcc/x86_64-linux-gnu/4.7/
    
  2. Anda dapat mencari libgfortran.adengan perintah berikut (opsional). Dalam kasus saya itu ada di /usr/lib/gcc/x86_64-linux-gnu/4.8/direktori.

    find /usr/lib/gcc/x86_64-linux-gnu/ -name libgfortran.a
    
  3. Buat symlink:

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

7

Apa yang saya lakukan, saya periksa di ubuntu apakah versi g ++, gcc, dan g sama atau tidak.

Saya kira lebih baik jika Anda memiliki ketiga versi yang sama.

# 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

Bagi saya ini menyelesaikan semua masalah yang saya hadapi saat menginstal paket "TTR" di R menggunakan RStudio di Ubuntu.


1
Ini solusi yang tepat. Tidak ada solusi di atas yang berfungsi untuk saya
— Yonatan Simson

1
Saya menggunakan gcc 6.5, tetapi metode yang sama menyelesaikan masalah. Menariknya, sumber yang sama: paket R yang tidak jelas.
— Ufos

Ya, ini adalah salah satu solusi terbaik yang bisa saya pikirkan.
— Manoj Kumar

4

Larutan:

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

Bisakah Anda membuatnya sedikit lebih verbose? Mungkin cdgaris yang terpisah setidaknya?
— Volker Siegel

2
Silakan tambahkan penjelasan. Orang seharusnya tidak pernah secara membabi buta menjalankan perintah yang mereka temukan di internet. Jadi tolong juga jangan menulisnya.
— s3lph

Terima kasih, ini menyelesaikannya untuk saya! Dalam kasus saya cd /usr/lib/gcc/x86_64-linux-gnu/4.9.3dulu sudo ln -s /usr/lib/gcc/x86_64-linux-gnu/4.8/libgfortran.a libgfortran.a
— Zhubarb
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.