LINUX.ORG.RU

Openmp and POSIX in GCC 8.2.0

 , , ,


1

2

Добрый день! Поясните пожалуйста следующий вопрос: собрал Linux для ARM Cortex A9 (Zynq FPGA) с компилятором: gcc version 8.2.0

Пытаюсь скомпилировать С файл с примером для Openmp:

#include <omp.h>
#include "stdio.h"
int omp_get_thread_num();
int main()
{
	# pragma omp parallel
	{
	  printf("Thread rank: %d\n", omp_get_thread_num());
	}
}

появляется ошибка

fatal error: omp.h: No such file or directory

вывод команды gcc -v

Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-xilinx-linux-gnueabi/8.2.0/lto-wrapper Target: arm-xilinx-linux-gnueabi Configured with: ../../../../../../work-shared/gcc-8.2.0-r0/gcc-8.2.0/configure --build=x86_64-linux --host=arm-xilinx-linux-gnueabi --target=arm-xilinx-linux-gnueabi --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/scratch/petalinux-yocto/yocto_downloads_2019.1_zynq-generic/build_zynq-generic/tmp/work/cortexa9t2hf-neon-xilinx-linux-gnueabi/gcc/8.2.0-r0/recipe-sysroot --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-default-pie --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=arm-xilinx-linux-gnueabi- --without-local-prefix --enable-lto --disable-libssp --enable-libitm --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --without-isl --with-float=hard --with-sysroot=/ --with-build-sysroot=/scratch/petalinux-yocto/yocto_downloads_2019.1_zynq-generic/build_zynq-generic/tmp/work/cortexa9t2hf-neon-xilinx-linux-gnueabi/gcc/8.2.0-r0/recipe-sysroot --with-gxx-include-dir=/usr/include/c++/8.2.0 --without-long-double-128 libgcc_cv_powerpc_float128=no --disable-static --enable-nls --enable-initfini-array --with-arch=armv7-a+fp Thread model: posix gcc version 8.2.0 (GCC)

Файлы с POSIX компилируются без проблем, но очень хочется иметь поддержку Openmp. Какие существуют возможные варианты решения данной ситуации?

Ответ на: комментарий от Alexey_Rostov

Включи этот флаг --enable-libgomp при сборке gcc, libgomp - это часть gcc

anonymous
()

-fopenmp надо в опции компилятору добавить. man gcc:

       -fopenmp
           Enable handling of OpenMP directives "#pragma omp" in C/C++ and "!$omp" in Fortran.  When -fopenmp is
           specified, the compiler generates parallel code according to the OpenMP Application Program Interface v4.5
           <http://www.openmp.org/>.  This option implies -pthread, and thus is only supported on targets that have
           support for -pthread. -fopenmp implies -fopenmp-simd.

tim239 ★★
()
Ответ на: комментарий от tim239

В итоге библиотеку включил в сборку

CORE_IMAGE_EXTRA_INSTALL += ”libgomp libgomp-dev libgomp-staticdev”

Все заработало

Alexey_Rostov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.