web-dev-qa-db-ja.com

ldが-lgfortranを見つけることができません

CMakeを使用してArchLinuxで Knut (数学プログラム)をコンパイルしようとすると、次のエラーが発生します。

_/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath
collect2: error: ld returned 1 exit status
make[2]: *** [cli/CMakeFiles/knut-cli.dir/build.make:101: cli/knut-cli] Error 1
make[1]: *** [CMakeFiles/Makefile2:498: cli/CMakeFiles/knut-cli.dir/all] Error 2
make: *** [Makefile:128: all] Error 2
_

gfortranquadmathの両方がインストールされており、リンクも正しいようです。

_$ ls -al /usr/lib | grep "fortran"
lrwxrwxrwx   1 root root       20 Jun  3 23:11 libgfortran.so -> libgfortran.so.3.0.0
lrwxrwxrwx   1 root root       20 Jun  3 23:11 libgfortran.so.3 -> libgfortran.so.3.0.0
-rwxr-xr-x   1 root root  5858448 Jun  3 23:11 libgfortran.so.3.0.0
-rw-r--r--   1 root root      269 Jun  3 03:11 libgfortran.spec

$ ls -al /usr/lib | grep "libquadmath"
lrwxrwxrwx   1 root root       20 Jun  3 23:11 libquadmath.so -> libquadmath.so.0.0.0
lrwxrwxrwx   1 root root       20 Jun  3 23:11 libquadmath.so.0 -> libquadmath.so.0.0.0
-rwxr-xr-x   1 root root   958384 Jun  3 23:11 libquadmath.so.0.0.0
_

同じ.soファイルが_/usr/lib64_にもあります。

私はgfortranバージョン6.1.1を持っています。私はCMakeをあまり知らないので、cmakeコマンドで変更しようとしたのは、_-D CMAKE_PREFIX_PATH=/usr/lib_を追加することだけでしたが、役に立ちませんでした。

問題を見つけるためにどのように進めることができるかについての提案はありますか?

EDIT1

後続のcmakeなしでmakeを実行しましたが、すべての依存関係が満たされているようです。

_- The C compiler identification is GNU 6.1.1
-- The CXX compiler identification is GNU 6.1.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- The Fortran compiler identification is GNU 6.1.1
-- Check for working Fortran compiler: /usr/bin/gfortran
-- Check for working Fortran compiler: /usr/bin/gfortran  -- works
-- Detecting Fortran compiler ABI info
-- Detecting Fortran compiler ABI info - done
-- Checking whether /usr/bin/gfortran supports Fortran 90
-- Checking whether /usr/bin/gfortran supports Fortran 90 -- yes
-- The Shell is found: /usr/bin/sh
-- The C++ runtime library is /usr/lib/gcc/x86_64-pc-linux-  gnu/6.1.1/../../../../lib/libstdc++.a
-- The FORTRAN runtime library is libgfortran.a, /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/libgcc.a and libquadmath.a
-- The DYNAMIC FORTRAN runtime library is /usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/../../../../lib/libgfortran.so
-- openBLAS was found as /usr/lib64/libopenblas.so.
-- Using system UMFPACK and AMD: /usr/lib64/libumfpack.so and /usr/lib64/libamd.so.
-- The includes are at /usr/include and /usr/include.
-- Using system LAPACK and ARPACK /usr/lib64/liblapack.so;/usr/lib64/libarpack.so.
-- The mxml library is /usr/lib64/libmxml.so.
-- The mxml include directory is /usr/include.
-- --> Qt5Core found.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/mark/knut/knut/build
_

その後、makeを実行すると、前述のエラーが発生します。

EDIT2

/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/に静的ライブラリ_libgfortran.a_と_libquadmath.a_が含まれていないことに気づきました。別のコンピューターに_gcc-4.8.5_があり、これらのファイルが存在します。 cmake出力から、これらはパスが指定されていないため、見つからない2つのライブラリのようです。

それが私のgfortranのインストールに問題があるのか​​、それとも他の問題なのか、それが何を意味するのかわかりません。

EDIT3 6月24日

Libgfortranの問題はArch固有のようです。どうやら静的ライブラリは通常Archにパッケージ化されていません。そのため、Debianの同じgcc-fortranパッケージにはlibgfortran.aファイルとlibquadmath.aファイルが含まれていますが、Archには含まれていません。 PKGBUILDのオプションをoptions=('staticlibs')に変更して、次のコンパイル用の静的ライブラリを含めました( abs を使用)。次に、生成されたlibgfortran.aファイルとlibquadmath.aファイルを_/usr/lib/gcc/x86_64-pc-linux-gnu/6.1.1/_にコピーすると、libgfortranの問題は解決されたようです。

しかし、KnudLarsenが言及したQt5エラーが発生しています。

4
itsok-dontworry

https://github.com/rs1909/knut/tree/master/knut

/ usr/bin/ld:-lgfortranが見つかりません

/ usr/bin/ld:-lquadmathが見つかりません

Knut/knut/knut.spec.cmakeをお読みください→Buildrequires:libgfortran-static ....つまりlibgfortran。a

おそらく-lquadmathについても同じです:libquadmath.a

(cmakeの構成でエラーは発生しません:Makefileが作成されます。)


編集1、6月23日:上記は設定例にすぎないようです:Makefileが作成されました。

ビルド例:PCLinuxOS 2016、CentOS 7、Fedora24がQt5エラーで失敗しています。

  • Debian 8 Jessie:knut/knut/build/src/config.hでcmakeが生成した構文エラーを除いて問題はありません。 $ makeと#make installはOKです。 gfortran、g ++はバージョン4.9.2です。 「libgfortran-4.9-dev」はlibgfortran.a、libquadmath.aを提供します

編集2、6月23日:Ubuntu16.04でのビルド...後のコンパイラgcc-5.3.1を試すために...

cd knut/knut/build/ && CC=gcc-5 CXX=g++-5 FC=gfortran-5 cmake .. && make && Sudo make install
  • 問題ありません ....

編集3:gcc/g ++/gfortranバージョン6.1.1でknutをテストする→Debian9ストレッチ。

CC=gcc-6 CXX=g++-6 FC=gfortran-6 cmake .. && make ; # make install
  • 大丈夫です。

編集4:ビルド要件..#apt-get install g++ libopenblas-dev libqt5svg5-dev

上記のすべてから私が得ることができる結論は、使用されたQt5が適合しなければならないということです。 Qt5の構成に違いがあるのでしょうか?パッチ? ... Qt5ファイルの場所に重要な違いはありません。

knut

1
Knud Larsen