我正在尝试在HPC集群上的Redhat linux环境中编译R.我使用环境模块来安装包括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
几个问题
这可能是一件我想念的简单事情,但我试图寻找合适的答案但没有成功。
高级感谢任何帮助。
答案 0 :(得分:2)
我遇到同样的问题:
gcc -Wl, - export-dynamic -fopenmp -L / usr / local / lib -o R.bin Rmain.o CommandLineArgs.o Rdynload.o Renviron.o RNG.o agrep.o apply.o arithmetic。 o array.o attrib.o bind.o builtin.o character.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 identical.o inlined .o inspect.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:错误:ld返回1退出状态
Makefile:144:目标'R.bin'的配方失败
这是R(autotools问题)的配置问题。我的电脑有gcc 4.8(附带操作系统)和最新版gcc 5.2(我从源代码构建)。 gcc 5.2位于/ usr / local
我看到R正在混合这两个,而不是拿起5.2库位置。
我更改了Makefile(这只是一次修复,因为make文件是由autotool生成的)。
首先转到src / main目录。然后编辑Makefile:
143 $(R_binary):$(R_bin_OBJECTS)$(R_bin_DEPENDENCIES) 144 $(MAIN_LINK)-o $ @ $(R_bin_OBJECTS)$(R_bin_LDADD)
Edite第144行:
144 $(MAIN_LINK)-o $ @ $(R_bin_OBJECTS)-L / usr / local / lib64 -lgomp $(R_bin_LDADD)
这解决了我的问题。我很难在R项目中提交错误。如果R开发人员看到这一点,他们可以在自动配置级别修复此问题吗?自动探测只需要更聪明一点。