我正在尝试从 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.so
或 libpardiso600-GNU800-X86-64.so
两者在其下载链接下可用。
关于lm - 对 `log2f@GLIBC_2.27' 的 undefined reference 对 `logf@GLIBC_2.27' 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57155333/