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 libgomp
OP와 유사한 출력이 생성되지만 Anaconda 관련 결과가 맨 위에 표시되는 것을 확인했습니다 .
제거 후에도 출력은 동일하며 기본 구성으로 ccminer를 빌드할 수 있습니다.
이 게시물Anaconda를 제거하는 방법에 대한 세부 정보
답변3
여러분의 컴파일 경험이 얼마나 되는지 모르겠지만 일반적으로 라이브러리를 설치하는 것만으로는 충분하지 않습니다. 라이브러리에 대해 컴파일하려면 개발 헤더도 설치해야 합니다. 이 패키지는 일반적으로 [라이브러리 이름]-dev라고 부르므로 설치되어 있는지 확인하세요. 이 경우 패키지 설치 프로그램에서는 "libgomp1-dev" 또는 이와 유사한 이름으로 불릴 것입니다.
게시한 오류는 컴파일러 버그처럼 보입니다. 구성 스크립트를 실행하면 libgomp에 어떤 내용이 전달되나요? 일반적으로 종속 라이브러리를 확인합니다.
편집하다:
헤더 파일은 일반적으로 /usr/include
또는 /usr/local/include
기본적으로 저장됩니다. 방금 내 파일을 살펴보았는데 libgomp와 관련된 것처럼 보이는 헤더가 전혀 표시되지 않습니다. libgomp1 패키지도 설치했지만 libgomp1-dev는 설치하지 않았습니다. 실제로 내 배포 저장소(Ubuntu 기반 Trisquel 7)에는 libgomp1-dev 패키지가 없는 것 같습니다. 어떤 헤더 파일을 사용해야 하는지, 어디서 찾을 수 있는지 확인하는 것이 좋습니다.