Closed FFY00 closed 6 years ago
me too
Did you look at the README? If you directly clone the git master version, you need to install special tools and run the bootstrapping script to create all of the generated code.
Most people should just download the release tarball rather than using the git source.
I'm sorry, I missed the README
. I did read the README.MD
but there weren't sny instructions. My bad.
-DDISABLE_FORTRAN=ON
I'm hitting this issue even using the downloaded tarball, both with and without the DISABLE_FORTRAN
option suggested by @Voskrese . Any suggestions?
Edit: Should probably add; FFTW version 3.3.8.
@djbarker Can you post the exact steps that caused the problem (starting from a fftw-3.3.8.tar.gz tarball unpacked in a fresh directory)
@matteo-frigo I was able to build successfully by completely blowing away the unpacked directory and starting afresh. I had tried make clean
but that wasn't helping.
The issue was that I had originally tried to build using ./configure
then make
with simd enabled. Then when I was trying to build with cmake it was somehow picking this up and failing.
mkdir build && cd build && cmake .. -LA -G"Unix Makefiles" -DDISABLE_FORTRAN=ON
cmake --build .
or make
I had the same issue; it turned out that I already had FFTW installed in my system, and the cmake options that I invoked were incompatible with the already-installed version.
For what it's worth, I was able to compile with
cmake -DCMAKE_INSTALL_PREFIX=${HOME}/fftw -DDISABLE_FORTRAN=ON -DENABLE_FLOAT=OFF -DENABLE_AVX2=ON ..
Looking into the guts of FFTW, these functions seem to be auto-generated by the build system (see support/Makefile.codelets and rdft/scalar/r2r/Makefile.am for example) in a new file called codlist.c. This file does not get generated when I run the basic cmake commands, hence the missing symbols.
How does one typically include FFTW as a dependency in a cmake project? I don't want my end-users to have to worry about installing FFTW themselves. Did I misunderstand something, or is it not currently possible?
the problem is still present. I am using the standard cmake procedure on Ubuntu 20.04, where already a libfftw is installed.
mkdir build ; cd build
cmake ..
make
which creates a local libfftw3.so.3.6.9 -> llibfftw3.so.3
However, linking C executable bench fails because of undefined reference to fftwsolvtab* this seems to be the same (re-opened) issue: https://github.com/FFTW/fftw3/issues/166
How does one typically include FFTW as a dependency in a cmake project?
Normal users should not build from a git clone. If you have to build FFTW as a dependency, build from a release tarball — that includes all of the auto-generated files.
Even when working from the tarball i keep getting the same error:
/usr/bin/ld: subprojects/fftw/libfftw3f.so.p/dft_conf.c.o: in function 'fftwf_dft_conf_standard': conf.c:(.text+0x29): undefined reference to 'fftwf_solvtab_dft_generic_simd128' /usr/bin/ld: conf.c:(.text+0x38): undefined reference to 'fftwf_solvtab_dft_generic_simd256' /usr/bin/ld: subprojects/fftw/libfftw3f.so.p/rdft_conf.c.o: in function 'fftwf_rdft_conf_standard': conf.c:(.text+0x47): undefined reference to 'fftwf_solvtab_rdft_generic_simd128' /usr/bin/ld: conf.c:(.text+0x56): undefined reference to 'fftwf_solvtab_rdft_generic_simd256'
How come it recognizes _standard, but not _simd*? What am i missing?
I have to comment these two lines on each conf.c to be able to compile: `
//X(solvtab_exec)(X(solvtab_dft_generic_simd128), p);
//X(solvtab_exec)(X(solvtab_dft_generic_simd256), p);
`
Running arch linux.
Error
Logs