- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have been trying to compile a Fortran90 code written to use FFTW2 calls using the MKL library wrappers for FFTW2. However, although I can make the library file with the correct F77 calls libfftw2xf_gnu.a, when I get to the link stage, it always fails with the warning
ld warning: in /opt/intel/Compiler/11.0/056/Frameworks/mkl/lib/em64t/libfftw2xf_gnu.a, file is not of required architecture
I don't understand what is causing the wrong architecture in the library, nor what compiler flags I need in order to get it to produce files of the correct architecture. Any help you can give would be much appreciated.
As a side note, I tried one the example files that come with MKL (after hacking it to enable compilation with gnu C), and it failed with the same error.
Sincerely,
Greg
The full output for my compilation is below
-------------------------------------------------
% make
ifort -c -I/opt/intel/Compiler/11.0/056/Frameworks/mkl/include/fftw src/twopoint_var.f90
ifort -c -I/opt/intel/Compiler/11.0/056/Frameworks/mkl/include/fftw src/twopoint_om.f90
ifort -c -I/opt/intel/Compiler/11.0/056/Frameworks/mkl/include/fftw src/twopoint_funcs.f90
ifort -c -I/opt/intel/Compiler/11.0/056/Frameworks/mkl/include/fftw src/twopoint_ffts.f90
ifort -c -I/opt/intel/Compiler/11.0/056/Frameworks/mkl/include/fftw src/twopoint_spectra.f90
ifort -c -I/opt/intel/Compiler/11.0/056/Frameworks/mkl/include/fftw src/twopoint.f90
ifort -o twopoint.e twopoint_var.o twopoint_om.o twopoint_funcs.o twopoint_ffts.o twopoint_spectra.o twopoint.o -I/opt/intel/Compiler/11.0/056/Frameworks/m
kl/include/fftw -lfftw2xf_gnu -L/opt/intel/Compiler/11.0/056/Frameworks/mkl/lib/em64t
ld warning: in /opt/intel/Compiler/11.0/056/Frameworks/mkl/lib/em64t/libfftw2xf_gnu.a, file is not of required architecture
Undefined symbols:
"_fftwnd_f77_create_plan___", referenced from:
_twopoint_ffts_mp_init_transforms_ in twopoint_ffts.o
_twopoint_ffts_mp_init_transforms_ in twopoint_ffts.o
_twopoint_ffts_mp_init_transforms_ in twopoint_ffts.o
_twopoint_ffts_mp_init_transforms_ in twopoint_ffts.o
"_fftwnd_f77_one__", referenced from:
_twopoint_spectra_mp_calc_bfield_ in twopoint_spectra.o
_MAIN__ in twopoint.o
_MAIN__ in twopoint.o
_MAIN__ in twopoint.o
"_fftwnd_f77_destroy_plan___", referenced from:
_twopoint_ffts_mp_finish_tranforms_ in twopoint_ffts.o
_twopoint_ffts_mp_finish_tranforms_ in twopoint_ffts.o
_twopoint_ffts_mp_finish_tranforms_ in twopoint_ffts.o
_twopoint_ffts_mp_finish_tranforms_ in twopoint_ffts.o
"_fftwnd_f77_one_", referenced from:
_twopoint_spectra_mp_output_kspec_ in twopoint_spectra.o
_twopoint_spectra_mp_output_kspec_ in twopoint_spectra.o
ld: symbol(s) not found
make: *** [two] Error 1
-------------------------------------
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Greg,
Looks like the gcc compiler used to build libfftwxf_gnu.a produced32 bit code, while ifort wants the library with 64-bit code.To build the correct library one should run 'make libem64t' in the interfaces/fftw2xf directory.
Thanks
Dima
![](/skins/images/7B0AB6865064EAE32B30EC9A4E94B48A/responsive_peak/images/icon_anonymous_message.png)
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page