-lgfortranが見つかりません


12

Rにパッケージ(パッケージ "ks")をインストールしようとしています。それはエラーメッセージで失敗します:

/usr/bin/ld: cannot find -lgfortran

私はすでにUbuntuパッケージbuild-essentialをインストールしています:

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とg ++を定期的に使用していますが、まだgfortranを使用する理由がありません。

私は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-generic-pae

誰もがldうまくいかない理由についてアドバイスを提供できますか?


1
リンカーが必要とするもの(* .a dev libs)ではなく、ランタイムライブラリに対してシンボリックリンクを作成しようとしました。パスの問題のようです。
Andrejs Cainikovs 2013

回答:


5

gfortranをインストールする必要があります。エラーは、ビルド時にリンクするための静的ライブラリが、調整しようとした動的ライブラリではなく、不足していることを指摘しています。


私がしようとすると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バージョンをインストールした場合、リンカーはlibgfortran.aの同様の名前のディレクトリ内を探しています。
rfindeis 2013

有効な回答のようです。
Andrejs Cainikovs 2013

4.7コンパイラの4.6ライブラリのシンボリックリンクが機能する場合があります。また、正しいパスを渡す-L(これはほとんど同じです)。これが失敗した場合は、gcc 4.7に使用したppaから4.7バージョンのgfortranをインストールする必要があります。現在、どのgfortranバージョンを使用していますか?
rfindeis 2013

gfortran-4.7をインストールするには、gcc-4.7をインストールするのと同じトリックを使用する必要がありました。
ユーザー

9

Cloud Oliverの回答に対するもう少しの説明。

このコマンドで現在使用されているgccのバージョンを確認します。

$sudo update-alternatives --config gcc

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

のエントリ*は、使用されているGCCのバージョンを示します。Enterキーを押すだけで、現在の設定が保持されます。

「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でg ++、gcc、gのバージョンが同じかどうかを確認することです。

同じバージョンの3つすべてをお持ちの方がよいと思います。

# 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

私はこれにより、UbuntuのRStudioを使用してRに「TTR」パッケージをインストールするときに直面していたすべての問題を解決しました。


1
これが正しい解決策です。上記の解決策のどれも私にとってうまく
いき

1
私はgcc 6.5を使用していますが、同じ方法で問題が解決しました。興味深いことに、同じソース:あいまいなRパッケージ。
Ufos

はい、これは私が考えることができる最高の解決策の1つでした。
Manoj Kumar

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行ですか?
Volker Siegel 14年

2
説明を追加してください。インターネットで見つけたコマンドを盲目的に実行してはなりません。ですから、それらも書かないでください。
s3lph 2014年

ありがとう、これで解決しました!私の場合はそれがだった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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.