이 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 패키지가 없는 것 같습니다. 어떤 헤더 파일을 사용해야 하는지, 어디서 찾을 수 있는지 확인하는 것이 좋습니다.

관련 정보