Ошибка при сборке R из исходного кода с поддержкой gcc OpenMP
Я пытаюсь скомпилировать R в среде Redhat Linux на кластере HPC. Я использовал модули среды для установки последних версий ряда инструментов, включая GCC 5.2.0. Я не могу получить R для сборки из источника. Сбой с неопределенной ссылкой на `GOMP_parallel'. Когда я компилирую с опцией --disable-openmp, она компилируется нормально.
array.o: In function `do_colsum':
array.c:(.text+0x5829): undefined reference to `GOMP_parallel'
collect2: error: ld returned 1 exit status
make[3]: *** [R.bin] Error 1
make[3]: Leaving directory `/scratch/kokul/240763.hpc5/R- 3.2.3/src/main'
make[2]: *** [R] Error 2
make[2]: Leaving directory `/scratch/kokul/240763.hpc5/R- 3.2.3/src/main'
make[1]: *** [R] Error 1
make[1]: Leaving directory `/scratch/kokul/240763.hpc5/R-3.2.3/src'
make: *** [R] Error 1
Пара вопросов
- Каковы преимущества наличия openMP, я предполагаю, что это повысит производительность?
- Как исправить ошибку, с которой я сталкиваюсь при сборке? Это связано со ссылками на правильную библиотеку? -fopenmp правильно используется при сборке. Файлы libgomp.* также находятся в $LIBRARY_PATH и $LD_LIBRARY_PATH.
Это может быть простая вещь, по которой я скучаю, но я пытался найти правильный ответ, но безуспешно.
Большое спасибо за любую помощь.
1 ответ
Я с той же проблемой:
gcc -Wl, - динамический экспорт -fopenmp -L/usr/local/lib -o R.bin Rmain.o CommandLineArgs.o Rdynload.o Renviron.o RNG.o agrep.o apply.o массив arithmetic.o. o attrib.o bind.o встроенный.o персонаж.o coerce.o colors.o complex.o connections.o context.o cum.o dcf.o datetime.o debug.o deparse.o devices.o dotcode.o dounzip.o dstruct.o duplicate.o edit.o engine.o envir.o errors.o eval.o format.o gevents.o gram.o gram-ex.o graphics.o grep.o идентичный. o inlined.o проверять.o internet.o iosupport.o lapack.o list.o localecharset.o logic.o main.o mapply.o match.o memory.o names.o objects.o options.o paste.o platform.o plot.o plot3d.o plotmath.o print.o printarray.o printvector.o printutils.o qsort.o radixsort.o random.o raw.o registration.o relop.o rlocale.o saveload.o scan.o seq.o serialize. o sort.o source.o split.o sprintf.o startup.o subassign.o subscript.o subset.o summary.o sysutils.o times.o unique.o util.o version.o g_alab_her.o g_cntrlify.o g_fontdb.o g_her_glyph.o xxxpr.o ls ../unix/*.o ../appl/*.o ../nmath/*.o
../extra/tre/libtre.a -L../../ lib -lRblas -L / usr / lib / gcc / x86_64-linux-gnu / 4.8 -lgfortran -lm -lquadmath -lreadline -lpcre -llzma - lbz2 -lz -lrt -ldl -lm array.o: в функции do_colsum':
/home/myaccount/Downloads/R-patched/src/main/array.c:1437: undefined reference to
GOMP_parallel'
collect2: error: ld вернул 1 состояние выхода Makefile:144: сбой рецепта для целевого объекта R.bin
Это проблема конфигурации из R (проблема с autotools). На моем компьютере есть и gcc 4.8 (поставляется с ОС), и последняя версия gcc 5.2 (я собираю из исходников). GCC 5.2 находится в / usr / local
Я видел, что R смешивает эти два, а не выбирает места расположения библиотеки 5.2.
Я изменил Makefile (это единовременное исправление, так как make-файл генерируется автоинструментом).
Сначала перейдите в каталог src/main. Затем отредактируйте Makefile:
143 $ (R_binary): $ (R_bin_OBJECTS) $ (R_bin_DEPENDENCIES) 144 $ (MAIN_LINK) -o $ @ $ (R_bin_OBJECTS) $ (R_bin_LDADD)
Редактировать строку 144:
144 $ (MAIN_LINK) -o $ @ $ (R_bin_OBJECTS) -L / usr / local / lib64 -lgomp $ (R_bin_LDADD)
Это исправило мою проблему. Мне было трудно подать сообщение об ошибке в проекте R. Если разработчики R увидели это, они могли бы это исправить на уровне автоматической настройки? Авто зондирование просто должно быть немного умнее.