[gmx-users] Build failure - Gromacs 5.1.4 on Windows 10 64-bit
Mark Abraham
mark.j.abraham at gmail.com
Wed Sep 14 10:25:20 CEST 2016
Hi,
You're trying to link fftw libraries from cygwin with the MSVC compiler.
AFAIK this simply cannot work because such interoperability is a non-goal
of either project. You can likely build with gcc from cygwin using the
cygwin infrastructure (but we haven't tested that), or follow the
installation guide
http://manual.gromacs.org/documentation/2016/install-guide/index.html#building-on-windows
(but
you'll have to make a decision about what FFT library you use and how to
build/get it).
Mark
On Wed, Sep 14, 2016 at 9:18 AM Sam Sutton <sam.sutton at chem.ox.ac.uk> wrote:
> Sorry about the formatting issues of my first email: Mac mail defaulting
> to rich not plain text… Here is the email again in hopefully legible plain
> text form.
>
> Hi all,
>
> I've been trying to install Gromacs 5.1.4 on my desktop PC, and after
> googling every new error and slowly progressing, I've reached an impasse. I
> have successfully installed Gromacs 5.1.4 on an Ubuntu 14.04 virtual
> machine on said PC, and am hoping the details I provide below are
> sufficient for someone wiser to help me out in getting it working on
> Windows!
>
> Windows 10 64-bit
> Cygwin version 2.6.0
> CMake version 3.6.1
>
> Installed fftw-3.3.5 from source using Cygwin:
>
> directory: cygdrive/c/fftw-3.3.5
>
> $ ./configure --enable-float --enable-sse2 --enable-avx --enable-avx2
> --enable-shared
> $ make
> $ make install
>
> Resulting In:
>
> /usr/local/bin:
> cygfftw3f-3.dll
> fftw-wisdom.exe
> fftw-wisdom-to-conf
>
> /usr/local/include:
> fftw3.f
> fftw3.f03
> fftw3.h
> fftw3l.f03
> fftw3q.f03
>
> /usr/local/lib:
> pkgconfig/fftw3f.pc
> libfftw3f.a
> libfftw3f.dll.a
> libfftw3f.la
>
> No shared libraries seem to have been created.
>
> I then create: C:\gromacs-5.1.4\build and run (again in Cygwin):
>
> $ CMAKE_PREFIX_PATH="C:\cygwin64\usr\local" cmake .. -DGMX_GPU=ON
> -DGMX_FFT_LIBRARY=fftw3 -DREGRESSIONTEST_DOWNLOAD=ON
>
> This results in a failure to find the fftw3f library. I read on the
> mailing list that I can specify include and lib directories manually to try
> and solve this issue:
>
> $ cmake .. -DCMAKE_INCLUDE_PATH="/usr/local/include"
> -DCMAKE_LIBRARY_PATH="/usr/local/lib" -DGMX_GPU=ON -DGMX_FFT_LIBRARY=fftw3
> -DREGRESSIONTEST_DOWNLOAD=ON
>
> But this also results in:
>
> -- Checking for module 'fftw3f'
> -- No package 'fftw3f' found
> -- pkg-config could not detect fftw3f, trying generic detection
> Could not find fftw3f library named libfftw3f, please specify its location
> in CMAKE_PREFIX_PATH or FFTWF_LIBRARY by hand (e.g.
> -DFFTWF_LIBRARY='/path/to/libfftw3f.so')
> CMake Error at cmake/gmxManageFFTLibraries.cmake:81 (MESSAGE):
> Cannot find FFTW 3 (with correct precision - libfftw3f for mixed-precision
> GROMACS or libfftw3 for double-precision GROMACS). Either choose the
> right
> precision, choose another FFT(W) library (-DGMX_FFT_LIBRARY), enable the
> advanced option to let GROMACS build FFTW 3 for you
> (-DGMX_BUILD_OWN_FFTW=ON), or use the really slow GROMACS built-in fftpack
> library (-DGMX_FFT_LIBRARY=fftpack).
> Call Stack (most recent call first):
> CMakeLists.txt:669 (include)
>
> I then specify the location of the fftw library file:
>
> $ cmake .. -DFFTWF_LIBRARY="/usr/local/lib/libfftw3f.a" -DGMX_GPU=ON
> -DGMX_FFT_LIBRARY=fftw3 -DREGRESSIONTEST_DOWNLOAD=ON
>
> Which results in:
>
> -- Checking for module 'fftw3f'
> -- No package 'fftw3f' found
> -- pkg-config could not detect fftw3f, trying generic detection
> -- Looking for fftwf_plan_r2r_1d in /usr/local/lib/libfftw3f.a
> -- Looking for fftwf_plan_r2r_1d in /usr/local/lib/libfftw3f.a - not found
> CMake Error at cmake/FindFFTW.cmake:101 (message):
> Could not find fftwf_plan_r2r_1d in /usr/local/lib/libfftw3f.a, take a
> look
> at the error message in C:/gromacs-5.1.4/build/CMakeFiles/CMakeError.log
> to
> find out what went wrong. If you are using a static lib (.a) make sure
> you
> have specified all dependencies of fftw3f in FFTWF_LIBRARY by hand (e.g.
> -DFFTWF_LIBRARY='/path/to/libfftw3f.so;/path/to/libm.so') !
> Call Stack (most recent call first):
> cmake/gmxManageFFTLibraries.cmake:78 (find_package)
> CMakeLists.txt:669 (include)
>
> To remedy the pkg-config issue:
>
> export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:PKG_CONFIG_PATH
>
> I then ran:
>
> $ cmake .. -DFFTWF_LIBRARY='/usr/local/lib/libfftw3f.a'
> -DFFTW_INCLUDE_DIR='/usr/include' -DGMX_PREFER_STATIC_LIBS=ON -DGMX_GPU=ON
> -DGMX_FFT_LIBRARY=fftw3 -DREGRESSIONTEST_DOWNLOAD=ON
>
> Resulting in:
>
> -- Checking for module 'fftw3f'
> -- Found fftw3f, version 3.3.5
> -- Looking for fftwf_plan_r2r_1d in /usr/local/lib/libfftw3f.a
> -- Looking for fftwf_plan_r2r_1d in /usr/local/lib/libfftw3f.a - not found
> CMake Error at cmake/FindFFTW.cmake:101 (message):
> Could not find fftwf_plan_r2r_1d in /usr/local/lib/libfftw3f.a, take a
> look
> at the error message in C:/gromacs-5.1.4/build/CMakeFiles/CMakeError.log
> to
> find out what went wrong. If you are using a static lib (.a) make sure
> you
> have specified all dependencies of fftw3f in FFTWF_LIBRARY by hand (e.g.
> -DFFTWF_LIBRARY='/path/to/libfftw3f.so;/path/to/libm.so') !
> Call Stack (most recent call first):
> cmake/gmxManageFFTLibraries.cmake:78 (find_package)
> CMakeLists.txt:669 (include)
>
> I have tried searching the Gromacs documentation and using Google to
> determine what the dependencies referred to are, and how to link them, but
> I have not been successful. The relevant section of the CMakeError.log file
> is pasted below:
>
> Source file was:
> int main() { return 0;}
> Determining if the function fftwf_plan_r2r_1d exists in the
> /cygdrive/c/fftw-3.3.5/.libs/libfftw3f.a failed with the following output:
> Change Dir: C:/gromacs-5.1.4/build/CMakeFiles/CMakeTmp
>
> Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe"
> "cmTC_600ec.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
> Microsoft (R) Build Engine version 14.0.25420.1
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> Build started 13/09/2016 10:57:24.
> Project "C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\cmTC_600ec.vcxproj" on
> node 1 (default targets).
> PrepareForBuild:
> Creating directory "cmTC_600ec.dir\Debug\".
> Creating directory "C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\Debug\".
> Creating directory "cmTC_600ec.dir\Debug\cmTC_600ec.tlog\".
> InitializeBuildStatus:
> Creating "cmTC_600ec.dir\Debug\cmTC_600ec.tlog\unsuccessfulbuild" because
> "AlwaysCreate" was specified.
> ClCompile:
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe /c /Zi
> /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D
> CHECK_FUNCTION_EXISTS=fftwf_plan_r2r_1d /D _DEBUG /D
> "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /Zc:wchar_t
> /Zc:forScope /Zc:inline /Fo"cmTC_600ec.dir\Debug\\"
> /Fd"cmTC_600ec.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue
> "C:\Program Files\CMake\share\cmake-3.6\Modules\CheckFunctionExists.c"
> Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24213.1 for x86
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> cl /c /Zi /W3 /WX- /Od /Ob0 /Oy- /D WIN32 /D _WINDOWS /D
> CHECK_FUNCTION_EXISTS=fftwf_plan_r2r_1d /D _DEBUG /D
> "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /Zc:wchar_t
> /Zc:forScope /Zc:inline /Fo"cmTC_600ec.dir\Debug\\"
> /Fd"cmTC_600ec.dir\Debug\vc140.pdb" /Gd /TC /analyze- /errorReport:queue
> "C:\Program Files\CMake\share\cmake-3.6\Modules\CheckFunctionExists.c"
>
> CheckFunctionExists.c
> Link:
> C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\link.exe
> /ERRORREPORT:QUEUE
> /OUT:"C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\Debug\cmTC_600ec.exe"
> /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib
> shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
> "\cygdrive\c\fftw-3.3.5\.libs\libfftw3f.a" /MANIFEST
> /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG
> /PDB:"C:/gromacs-5.1.4/build/CMakeFiles/CMakeTmp/Debug/cmTC_600ec.pdb"
> /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT
> /IMPLIB:"C:/gromacs-5.1.4/build/CMakeFiles/CMakeTmp/Debug/cmTC_600ec.lib"
> /MACHINE:X86 /SAFESEH /machine:X86
> cmTC_600ec.dir\Debug\CheckFunctionExists.obj
> LINK : fatal error LNK1104: cannot open file
> '\cygdrive\c\fftw-3.3.5\.libs\libfftw3f.a'
> [C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\cmTC_600ec.vcxproj]
> Done Building Project
> "C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\cmTC_600ec.vcxproj" (default
> targets) -- FAILED.
>
> Build FAILED.
>
> "C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\cmTC_600ec.vcxproj" (default
> target) (1) ->
> (Link target) ->
> LINK : fatal error LNK1104: cannot open file
> '\cygdrive\c\fftw-3.3.5\.libs\libfftw3f.a'
> [C:\gromacs-5.1.4\build\CMakeFiles\CMakeTmp\cmTC_600ec.vcxproj]
>
> 0 Warning(s)
> 1 Error(s)
>
> Time Elapsed 00:00:00.45
>
> Thanks in advance,
>
> Sam
> --
> Gromacs Users mailing list
>
> * Please search the archive at
> http://www.gromacs.org/Support/Mailing_Lists/GMX-Users_List before
> posting!
>
> * Can't post? Read http://www.gromacs.org/Support/Mailing_Lists
>
> * For (un)subscribe requests visit
> https://maillist.sys.kth.se/mailman/listinfo/gromacs.org_gmx-users or
> send a mail to gmx-users-request at gromacs.org.
More information about the gromacs.org_gmx-users
mailing list