このlibgomp1依存関係の問題を解決するには?

このlibgomp1依存関係の問題を解決するには?

Ubuntu 16.04でccminerをビルドしてインストールしようとすると、次のエラーが発生します。

scrypt.cpp:(.text+0xa55b): undefined reference to `GOMP_parallel'
scrypt.cpp:(.text+0xa6cd): undefined reference to `GOMP_parallel'

libgomp1がインストールされました:

Package: libgomp1
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 156
Maintainer: Ubuntu Core developers <[email protected]>
Architecture: amd64
Multi-Arch: same
Source: gcc-5
Version: 5.4.0-6ubuntu1~16.04.5
Depends: gcc-5-base (= 5.4.0-6ubuntu1~16.04.5), libc6 (>= 2.17)
Breaks: gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)
Description: GCC OpenMP (GOMP) support library
 GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers
 in the GNU Compiler Collection.
Homepage: http://gcc.gnu.org/
Original-Maintainer: Debian GCC Maintainers <[email protected]>

これらのライブラリはここにあります。

locate libgomp

/usr/lib/gcc/x86_64-linux-gnu/5/libgomp.a
/usr/lib/gcc/x86_64-linux-gnu/5/libgomp.so
/usr/lib/gcc/x86_64-linux-gnu/5/libgomp.spec
/usr/lib/x86_64-linux-gnu/libgomp.so.1
/usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
/usr/share/doc/libgomp1
/var/lib/dpkg/info/libgomp1:amd64.list
/var/lib/dpkg/info/libgomp1:amd64.md5sums
/var/lib/dpkg/info/libgomp1:amd64.shlibs
/var/lib/dpkg/info/libgomp1:amd64.symbols
/var/lib/dpkg/info/libgomp1:amd64.triggers

config / makeファイル内のライブラリの場所をどのように指定できますか?

生成されたファイルには以下が含まれます。

OPENMP_CFLAGS = -fopenmp

関連がある場合は、いくつかのビルドプロセスを妨げる可能性があることを読んだので、Anacondaをインストールしました。

build.shのVERBOSE出力へのリンク

出力ポイント

gcc および g++ バージョン:

g++ --version
g++ (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609

gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609

答え1

ディストリビューションのデフォルトのgccバージョン(おそらく6または7)を使用しているようです。インストール文書によると、gcc 5が唯一サポートされているバージョンです。バージョンチェックを使用できますgcc --version。 Ubuntuでバージョンを変更するには、次のコマンドを実行します。

sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 1
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 1

答え2

私は同じ問題があり、OPが予測したように、私の問題はAnacondaのインストールに関連しており、それを削除した後に修正されました。実行するとlocate libgompOPに似た出力が生成されますが、Anaconda関連の結果が一番上に表示されることを確認しました。

アンインストール後も出力は同じで、デフォルト設定でccminerを構築できます。

この投稿Anacondaを削除する方法の詳細

答え3

あなたのコンパイル経験がどれくらいになるのかわかりませんが、一般的にライブラリをインストールするだけでは十分ではありません。ライブラリをコンパイルするには、開発ヘッダーもインストールする必要があります。このパッケージは通常[ライブラリ名]-devと呼ばれているので、インストールされていることを確認してください。この場合、パッケージインストーラは「libgomp1-dev」または同様の名前で呼び出されます。

投稿したエラーはコンパイラのバグのように見えます。構成スクリプトを実行すると、libgompにどのような内容が渡されますか?通常、依存ライブラリを確認します。

編集する:

ヘッダファイルは通常/usr/includeまたは/usr/local/includeデフォルトで保存されます。私は私のファイルを見ましたが、libgompに関連しているように見えるヘッダーはまったく表示されません。 libgomp1パッケージもインストールしましたが、libgomp1-devはインストールしませんでした。実際、私の配布リポジトリ(UbuntuベースのTrisquel 7)にはlibgomp1-devパッケージがないようです。どのヘッダファイルを使用するのか、どこで見つけることができるかを確認することをお勧めします。

関連情報