我试图通过对 .so 使用 dlopen() 并在每个版本中打开函数来支持 Ubuntu 18.04 和 CentOS 7 中的 zgetrf() ,但调用约定不同。在 CentOS 中,它使用 LAPACKE_zgetrf() 工作,但在 Ubuntu 18.04 中,它们不会导出为 LAPACKE_zgetrf,唯一的选择是 zgetrf_:
# objdump -T /usr/lib/i386-linux-gnu/libopenblas.so.0 |grep zgetrf
[...]
000c3a60 g DF .text 00000191 Base zgetrf_
我可以按如下方式进行 LAPACKE_zgetrf() 调用,这可行:
LAPACKE_zgetrf(order, m, n, a, ndim, (int32_t*)ip);
如何将其转换为 call zgetrf_(...)
?