0

对于其他软件,我需要--enable-mpi --enable-type-prefix --enable-float安装 fftw-2.1.5。它应该编译为pgcc

PGCC等都安装在该/home目录下。对于这篇文章,我将其缩短为path-to.

我愿意:

./configure --prefix=/path-to/fftw --enable-mpi --enable-type-prefix --enable-float CC=path-to/pgcc CXX=path-to/pgc++ F77=path-to/ pgf77 FC=路径到/pgfortran

制作`

./configure成功完成,在make我收到此错误消息期间:

/usr/bin/ld: ../fftw/.libs/libsfftw.a(malloc.o): relocation R_X86_64_32 against .rodata' 不能在制作共享对象时使用;使用 -fPIC 重新编译
/usr/bin/ld: ../fftw/.libs/libsfftw.a(putils.o): 重定位 R_X86_64_32 对 .rodata' 在制作共享对象时不能使用;使用 -fPIC 重新编译
/usr/bin/ld: ../fftw/.libs/libsfftw.a(twiddle.o): 重定位 R_X86_64_32 对 .data' 制作共享对象时不能使用;使用 -fPIC 重新编译
/usr/bin/ld:最终链接失败:输出中不可表示的部分
collect2:错误:ld 返回 1 个退出状态

我试图用-fPIC标志重新编译:

打扫干净
使 CFLAGS="-fPIC"

然后我得到:

../fftw/.libs/libsfftw.a(twiddle.o):在函数“fftw_compute_twiddle”中:
/home/daniel/fftw-test/fftw-2.1.5/fftw/./twiddle.c:92:未定义对“__fd_sincos_1”的引用
/home/daniel/fftw-test/fftw-2.1.5/fftw/./twiddle.c:126:未定义对“__fd_sincos_1”的引用
../fftw/.libs/libsfftw.a(twiddle.o):在函数“fftw_compute_rader_twiddle”中:
/home/daniel/fftw-test/fftw-2.1.5/fftw/./twiddle.c:65:未定义对“__fd_sincos_1”的引用
collect2:错误:ld 返回 1 个退出状态

我现在试图找到一个解决方案来解决为什么会发生几个小时,但我无法弄清楚。

当我将其配置为使用 gcc 编译器(系统默认)时,一切正常:

./configure --prefix=/fftw --enable-mpi --enable-type-prefix --enable-float
制作
进行安装

编辑,更多信息:

  • 我需要 fftw 的程序需要 pgcc。我认为最好按照某些论坛网站上的建议用它编译所有内容。

  • 在 twiddle.c 中没有提到__fd_sincos_1. 例如第 92 行很简单 for (i = 0; i < n; ++i) {

  • 当我放下时,--enable-type-prefix什么都没有改变。还是同样的错误。

4

0 回答 0