Ошибка FindOpenMP при установке OpenMP_pthread_LIBRARY на alpine - PullRequest
0 голосов
/ 16 марта 2020

Я пытался создать многопоточное приложение с помощью cmake в моем контейнере. Он не удался, когда я пытался найти OpenMP 3.0 с FindOpenMP, но работал нормально, если FindOpenMP был удален. Вот мой тест

#include <omp.h>

int main(void) {
    omp_get_max_threads();
    return 0;
}

и конфигурация

cmake_minimum_required(VERSION 3.15)

project(test)

find_package(Threads REQUIRED)
find_package(OpenMP 3.0 REQUIRED)

add_executable(test test.cpp)
target_link_libraries(test
    PUBLIC gomp)

CMake пожаловался на отсутствие переменной, но когда я закомментировал строку find_package(OpenMP 3.0 REQUIRED), он прошел все проверки.

-- The C compiler identification is GNU 9.2.0
-- The CXX compiler identification is GNU 9.2.0
-- Check for working C compiler: /opt/gcc/9.2.0/bin/gcc
-- Check for working C compiler: /opt/gcc/9.2.0/bin/gcc -- 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: /opt/gcc/9.2.0/bin/c++
-- Check for working CXX compiler: /opt/gcc/9.2.0/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find OpenMP_C (missing: OpenMP_pthread_LIBRARY) (found suitable
  version "4.5", minimum required is "3.0")
Call Stack (most recent call first):
  /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake/Modules/FindOpenMP.cmake:477 (find_package_handle_standard_args)
  CMakeLists.txt:6 (find_package)


-- Configuring incomplete, errors occurred!

Мой контейнер был построен по последнему альпийскому изображению. G CC 9.2.0 был построен вручную с параметрами

--enable-languages=c,c++ --disable-multilib --build=x86_64-alpine-linux-musl --host=x86_64-alpine-linux-musl --target=x86_64-alpine-linux-musl --disable-libsanitizer --disable-libatomic --disable-libitm

Изображение docker поддерживается на https://hub.docker.com/repository/docker/leavesask/gcc/general. Я давно использую его для других проектов, но я впервые пытаюсь использовать FindOpenMP.

...