lm - 对 `log2f@GLIBC_2.27' 的 undefined reference 对 `logf@GLIBC_2.27' 的 undefined reference

标签 lm lapack math.h

我正在尝试从 pardiso 网站运行示例代码,但最终出现此错误。 我从 http://www.netlib.org/lapack/ 安装了 lapack 包

gcc pardiso_sym.c -L /home/sree/ -lpardiso600-GNU800-X86-64 -llapack  -lgfortran -fopenmp -lm -ldl

错误:

/home/sree//libpardiso600-GNU800-X86-64.so: undefined reference to `log2f@GLIBC_2.27'
/home/sree//libpardiso600-GNU800-X86-64.so: undefined reference to `logf@GLIBC_2.27'
collect2: error: ld returned 1 exit status

最佳答案

我知道这个问题很老但是无论如何:

首先 - 您收到的错误是链接器错误,它似乎无法解析对 glibc 中定义的函数的引用。

这里给出的 glibc 版本(GNU C library)是 2.27。

我现在怀疑 GCC 在尝试编译 pardiso_sym.c 时使用的版本低于指定的 glibc 版本 - 因此出现错误。

您可以找到一个关于检查不同 gcc 编译器使用的 glibc 版本的好帖子 here .

也就是说 - 不同的 gcc 编译器可能使用不同版本的 glibc 进行链接。您现在可以专门尝试并链接适当版本的 glibc ( like described here ) 或者 - 可能更可行 - 尝试并 update your glibc version .

所描述的 pardiso 包也是使用 gcc 8.0 编译的,但是有一个使用 gcc 7.2 编译的 pardiso 版本可用。这两个版本还链接不同的 glibc 版本,使用 libpardiso600-GNU720-X86-64.so 可能已经可行。 此外,我还会使用比用于编译 pardiso 的版本更高的 gcc 版本,因此您可能也想升级 gcc。

编辑: 最初 Pardiso 6.0(并且,就此而言还有 6.2)被部署为 libpardiso600-GNU720-X86-64.solibpardiso600-GNU800-X86-64.so 两者在其下载链接下可用。

关于lm - 对 `log2f@GLIBC_2.27' 的 undefined reference 对 `logf@GLIBC_2.27' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57155333/

相关文章:

c - 为什么我收到错误 "undefined reference to ` pow' collect2 : error: ld returned 1 exit status make: *** [p1] Error 1"?

r - 数据帧 *tmp* 替换中有 x 数据有 y 时出错

python - 使用 rpy2 从回归中获取标准误差

c - 在 Mac OS 上为 C 安装 LAPACK 和 BLAS 库

c++ - 在 Mac OS X 上安装 C++ Armadillo 库

c++ - 为什么 acos() 在使用点积的结果时会产生 "nan(ind)"?

r - 使用 dplyr 将数据传递给 forecast.lm 并执行

r - 从 .lm.fit() 计算 p 值的快速方法

gcc - 将 Armadillo lapack blas 链接到代码 : undefined reference to `dtrsm_ ' 时出错

c - 如果 -0.0 之后的下一个可表示值是 +0.0,那么为什么 nextafter(-0.0, INFINITY) 不返回 +0.0?