Я хочу скомпилировать код C с разгрузкой OpenMP и создать динамическую библиотеку libtest.so
. Когда я использую следующую команду:
gcc -fPIC -shared -fopenmp -foffload=nvptx-none="-fPIC" test.c -o libtest.so
Я получаю эту ошибку:
/usr/bin/ld: /tmp/ccWnqb5o.target.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
collect2: error: ld returned 1 exit status
Версия GCC 10.2.0. Я не уверен, что я делаю неправильно, так как -fPIC
включен в команду. Интересно, возможно ли вообще делать то, что я хочу?
Мой источник test.c
просто проверяет, работает ли разгрузка:
#include <omp.h>
#include <stdio.h>
void test()
{
#pragma omp target teams
{
if (omp_is_initial_device())
printf("on host\n");
else
printf("on target device\n");
}
}