【发布时间】:2012-09-15 01:45:32
【问题描述】:
我正在尝试编译一个调用 POPCNT 的 fortran 90 程序,如下所示:
...
print *, popcnt(127)
...
编译如下:
gfortran prog.f90
它给了我以下信息:
...: undefined reference to `popcnt_'
请问谁能推荐正确的编译方式?谢谢。
【问题讨论】:
-
popcnt是用户定义的函数吗?如果是这样,它位于哪里?如果不在prog.f90中,则必须对其进行编译并将两者链接在一起。让我们知道它在哪里。 -
@yosukesabai gcc.gnu.org/onlinedocs/gfortran/POPCNT.html 提前致谢!
-
您的 gfortran 可以采用 -std=f2008 选项吗?即
gfortran -std=2008 prog.f90?我在 cygwin 和 redhat 上的版本都无法识别 potcnt 并且无法识别 -std=2008 选项。所以也许你必须以某种方式获得最新版本的 gfortran(我的版本是 GNU Fortran (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52)) -
@yosukesabai 我确实使用“gfortran -std=f2008 prog.f90”编译它,它仍然说未定义对 popcnt 的引用。
-
我用 pgf95 (www.pgroup.com) 进行了测试,我在三行中打印了一些数字。所以看起来像是支持你的特定版本编译器的 f2008 功能。