我正在开发的一个软件使用全小写符号名称将 NETLIB BLAS/LAPACK 嵌入到其源代码中,但现在将应用程序移植到 Windows 时我发现 Intel MKL 和该平台的其他几个 BLAS/LAPACK 实现使用全大写符号名称。有没有办法告诉 gnu 编译器/链接器在匹配符号名称时忽略大小写?
.
.
.
undefined reference to `_dgeqp3'
.
.
.
$ nm /lib/LAPACK.lib | grep -i " T _dgeqp3"
00000000 T _DGEQP3
您看到的差异是由于 Fortran 调用约定造成的:在 Fortran 中,符号大小写并不重要,因此每个编译器都有一种方法将 Fortran 符号名称转换为汇编程序符号名称:GNU 编译器通常将全部转换为小写,Windows 上的 Intel 则如此为大写。
如果您使用 Fortran 代码,则可以使用-fsymbol-case-upper
较旧的选项g77
编译器(较新的gfortran
编译器没有这个)。否则,C 就没有简单的答案,除了:
- using
#define
's
- 使用 BLAS 和 LAPACK 的 C 接口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)