パッケージlarsをインストールしようとしています。 Ubuntu 11.04 Natty 64ビット。建物から私は得る:
* installing *source* package âlarsâ ... ** libs gfortran -fpic -O3 -pipe -g -c delcol.f -o delcol.o gcc -shared -o lars.so delcol.o -lgfortran -lm -L/usr/lib64/R/lib -lR /usr/bin/ld: cannot find -lgfortran collect2: ld returned 1 exit status make: *** [lars.so] Error 1 ERROR: compilation failed for package âlarsâ
gfortranがインストールされており、gfortran --version
を実行すると、
gfortran --version GNU Fortran(Ubuntu/Linaro 4.5.2-8ubuntu4)4.5.2
Sudo ldconfig -v
はエラーを示します
/sbin/ldconfig.real:/usr/lib/libgfortran.soをstatできません:そのようなファイルまたはディレクトリはありません
私はすでにgfortranを削除して再インストールしました。これを修正するには何が必要ですか?
Debian/Ubuntuファミリーの場合、通常は
$ Sudo apt-get install r-base-dev
コンパイルに通常必要なすべてのパッケージを取り込むためです。また、自動化されたパッケージビルダーはこれに依存しているため、このアプローチは常にテストされています(さらに、パッケージごとのBuild-Dependsも追加されています)。 gfortran
パッケージもここにリストされています。多分あなたは以前のインストールから壊れたリンクを持っているので私もdpkg --purge gfortran; apt-get install gfortran
。とは言っても、何十ものRパッケージ(およびR自体)がFortranを使用しているため、ここでは魔法はありません。
Ubuntu 12.10 64ビットにCRANパッケージVGAMをインストールしようとすると、同じ問題が発生しました。私はすでにr-base-devをインストールしていましたが、Dirk Eddelbuettelの回答に対するAndrew Reddの2番目のコメントが役に立ちました。
具体的には、2つのエラーが発生しました。
/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath
次の行で修正されました:
Sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
Sudo ln -s /usr/lib/x86_64-linux-gnu/libquadmath.so.0 /usr/lib/libquadmath.so
元の投稿から問題を処理するために必要なのは最初の行だけであることに注意してください。 lquadmathでの追加エラーの2行目が修正されました。
他の提案で問題が解決したようですが、質問にも当てはまりますが、私の場合は解決策が異なりました。私の問題は、私のgccおよびg ++バージョンが私のgfortranバージョンと異なることでした。以下を使用して、それらがすべて同じになるように切り替えました。
使用しているgcc、g ++、およびgfortranのバージョンを確認します。
g++ --version
gcc --version
gfortran --version
それらがすべて同じになるように一致させます。
Sudo update-alternatives --config g++
Sudo update-alternatives --config gcc
Sudo update-alternatives --config gfortran
私の場合、gfortranのバージョンは1つしかなかったので、g ++とgccのバージョンを変更して、gfortranのバージョンと一致させました。
Rパッケージminqaをubuntu 12.04、R3.1.0。、x86 32ビットにインストールする同じ問題(実際には、キャレットパッケージインストールの一部でした)。
によって解決
Sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
すべての依存関係のため、r-base-devの再インストールは機能せず、gfortranを再インストールしようとしませんでした。
システム/バージョンに応じて、
ls -l /usr/lib/libgfortran.so
リンクが存在する/正しいことを確認します。
Centosを使用していますが、r-base-devを取得できません。私はgfortranもインストールしており、そのバージョンはgccおよびg ++のバージョンと一致しています。それでも機能しませんでした。ただし、~/.R/Makevars
を作成してこの問題を解決しました。
cd ~
mkdir .R
touch Makevars
私はgfortranをインストールしたディレクトリを見つけました(どうやら問題はRがそれを見つけられないことです)
which gfortran
私はusr/bin/gfortran
にgfortranをインストールしたと言っています。次に、.R/Makevars
にフラグを追加して、Rに使用するように指示します。
F77 = /usr/bin/gfortran
FC = $F77
FLIBS = -L/usr/bin/gfortran
Makevarsファイルは次の方法で編集できます。
vi .R/Makevars
これで、テキストファイルを編集できるvi
プログラムに入りました。編集するにはi
と入力します。ターミナルウィンドウの下部にINSERT
が表示されます。次に、私が上に置いたものを入力できます。変更を保存してvi
を終了するには、escキーを押して、:wq
と入力します。
MacOSではFLIBS行が大きく異なるため、FLIBS行を正しく配置したかどうかは完全にはわかりません。 MacOSでは、リンクするライブラリがあるgfortranの下にディレクトリがありますが、gfortran
はLinuxのディレクトリではないようです。少なくともこれでうまくいき、/usr/bin/ld: cannot find -lquadmath
の問題も解決したので、gfortranを必要とするRパッケージをスムーズにインストールしました。
ライブラリをインストールする必要はありませんでした。うまくいったことを投稿すると、多分誰かに役立つでしょう。
~/.R/Makevars
使用するように定義CC=gcc-8
。私のマシンのデフォルトのgccは7.4.0ですが、gcc-8をインストールしました。同時に、gfortran 8がなく、7.4.0しかありませんでした。 Makevarsの行をコメント化すると、コンパイルはデフォルトのgcc-7を使用するようにフォールバックし、そのときはgfortran-7 libを正常に使用していました。
私の場合(Amazon Linux EC2 AMI)のように、これを今後の参照用にここに残しておくと、問題はシンボリックリンクの名前に関係し、その場所には関係ありませんでした。
Sudo ln -s /usr/lib64/libgfortran.so.3 /usr/lib64/libgfortran.so
Sudo ln -s /usr/lib64/libquadmath.so.0 /usr/lib64/libquadmath.so
同じエラー on Mac でこのページにアクセスした人は、以下を試してください:
Homebrew をインストールして実行します。
brew install gcc
次に、ファイルを作成します~/.R/Makevars
内容(これはgccバージョン9.1.0に対応していることに注意してください):
VER=-9
CC=gcc$(VER)
CXX=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/9.1.0/lib/gcc/9
将来の失われた魂のために、コンパイラのバージョンがすべて一致することを確認するのにも役立ちます(- https://askubuntu.com/questions/276892/cannot-find-lgfortran ごとに)。私の場合、gccとgfortranはどちらも4.8.4でしたが、g ++は4.6でした。
Gcc44を使用している場合は、次のものが必要です。
yum install gcc44-gfortran