对于其他软件,我需要--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
什么都没有改变。还是同样的错误。