计算化学公社

标题: 求助,Ubuntu系统安装gromacs,编译fftw总是报错 [打印本页]

作者
Author:
国小药    时间: 2024-9-14 23:17
标题: 求助,Ubuntu系统安装gromacs,编译fftw总是报错
本次安装参考的教程:http://sobereva.com/457
安装cmake和fftw的过程如下:

安装camke(官网下载www.cmake.org/cmake-3.21.5.tar
tar xzvf cmake-3.21.5.tar   # 解压
cd cmake-3.21.5 #进入解压后的目录
./bootstrap --prefix=/home/spuser/ydf/cmake3 -- -DCMAKE_USE_OPENSSL=OFF  # 编译
sudo make -j install
sudo vi ~/.bashrc
export PATH=$PATH:/home/spuser/ydf/cmake3/bin  #配制环境变量

安装fftw
下载安装包fftw-3.3.8.tar.gz(http://ww.fftw.org/fftw-3.3.8.tar.gz
tar xzvf fftw-3.3.8.tar.gz
cd fftw-3.3.8
./configure --prefix=/home/spuser/ydf/fftw338 --enable-sse2 --enable-avx --enable-float --enable-shared
sudo make -j install


由于采用的ubuntu系统,无法使用yum安装cmake,在官网上下载cmake包进行安装的,但在编译fftw时候出现了如下错误,本人也在网上查看了各种可能得解决的方法,以及其他的安装gromacs的途径,但都无法成功,希望老师指点,万分感谢!

作者
Author:
sobereva    时间: 2024-9-15 00:38
不要把cmake和fftw的安装包作为附件上传,没意义还浪费论坛空间,别人在官网上都能直接下。我给删了
Ubuntu可以用apt-get装cmake

主动交代Ubuntu版本和gcc版本

作者
Author:
国小药    时间: 2024-9-15 08:48
sobereva 发表于 2024-9-15 00:38
不要把cmake和fftw的安装包作为附件上传,没意义还浪费论坛空间,别人在官网上都能直接下。我给删了
Ubunt ...

Ubuntu版本信息如下:
No LSB modules are available.
Distributor ID:        Ubuntu
Description:        Ubuntu 24.04.1 LTS
Release:        24.04
Codename:        noble

gcc版本信息如下:
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-linux-gnu/13/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 13.2.0-23ubuntu4' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-libstdcxx-backtrace --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-13-uJ7kn6/gcc-13-13.2.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-13-uJ7kn6/gcc-13-13.2.0/debian/tmp-gcn/usr --enable-offload-defaulted --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 13.2.0 (Ubuntu 13.2.0-23ubuntu4)

老师,您看一下,非常感谢您的指导
作者
Author:
Santz    时间: 2024-9-15 11:15
cmake 完全不需要从源码编译,直接使用二进制包;  从你图片来看,没看到有什么影响 fftw 的错误。

作者
Author:
国小药    时间: 2024-9-15 12:36
Santz 发表于 2024-9-15 11:15
cmake 完全不需要从源码编译,直接使用二进制包;  从你图片来看,没看到有什么影响 fftw 的错误。

应该就是图片中出现waring的部分,正常编译的时候是不会出现这个的;如果忽略这个,后续安装groamcs就会出现如下报错:
In file included from /home/spuser/ydf/gromacs-2021.5/src/gromacs/analysisdata/dataframe.h:49,
                 from /home/spuser/ydf/gromacs-2021.5/src/gromacs/analysisdata/dataframe.cpp:44:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:126:5: error: ‘uint64_t’ does not name a type
  126 |     uint64_t flags_;
      |     ^~~~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:1:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?
  +++ |+#include <cstdint>
    1 | /*
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In constructor ‘gmx::FlagsTemplate<FlagType>::FlagsTemplate()’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:73:23: error: class ‘gmx::FlagsTemplate<FlagType>’ does not have any field named ‘flags_’
   73 |     FlagsTemplate() : flags_(0) {}
      |                       ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In constructor ‘gmx::FlagsTemplate<FlagType>::FlagsTemplate(FlagType)’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:75:36: error: class ‘gmx::FlagsTemplate<FlagType>’ does not have any field named ‘flags_’
   75 |     FlagsTemplate(FlagType flag) : flags_(flag) {}
      |                                    ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘bool gmx::FlagsTemplate<FlagType>::test(FlagType) const’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:83:46: error: ‘flags_’ was not declared in this scope; did you mean ‘flag’?
   83 |     bool test(FlagType flag) const { return (flags_ & flag) != 0; }
      |                                              ^~~~~~
      |                                              flag
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘void gmx::FlagsTemplate<FlagType>::clearAll()’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:85:23: error: ‘flags_’ was not declared in this scope
   85 |     void clearAll() { flags_ = 0; }
      |                       ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘void gmx::FlagsTemplate<FlagType>::set(FlagType)’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:87:31: error: ‘flags_’ was not declared in this scope; did you mean ‘flag’?
   87 |     void set(FlagType flag) { flags_ |= flag; }
      |                               ^~~~~~
      |                               flag
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘void gmx::FlagsTemplate<FlagType>::clear(FlagType)’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:89:33: error: ‘flags_’ was not declared in this scope; did you mean ‘flag’?
   89 |     void clear(FlagType flag) { flags_ &= ~flag; }
      |                                 ^~~~~~
      |                                 flag
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘gmx::FlagsTemplate<FlagType> gmx::FlagsTemplate<FlagType>::operator|(const gmx::FlagsTemplate<FlagType>&) const’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:106:40: error: ‘flags_’ was not declared in this scope
  106 |         return FlagsTemplate<FlagType>(flags_ | other.flags_);
      |                                        ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘gmx::FlagsTemplate<FlagType>& gmx::FlagsTemplate<FlagType>::operator|=(const gmx::FlagsTemplate<FlagType>&)’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:111:9: error: ‘flags_’ was not declared in this scope
  111 |         flags_ |= other.flags_;
      |         ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘gmx::FlagsTemplate<FlagType> gmx::FlagsTemplate<FlagType>::operator&(const gmx::FlagsTemplate<FlagType>&) const’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:117:40: error: ‘flags_’ was not declared in this scope
  117 |         return FlagsTemplate<FlagType>(flags_ & other.flags_);
      |                                        ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In member function ‘gmx::FlagsTemplate<FlagType> gmx::FlagsTemplate<FlagType>::operator~() const’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:120:81: error: ‘flags_’ was not declared in this scope
  120 |     FlagsTemplate<FlagType> operator~() const { return FlagsTemplate<FlagType>(~flags_); }
      |                                                                                 ^~~~~~
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h: In constructor ‘gmx::FlagsTemplate<FlagType>::FlagsTemplate(long unsigned int)’:
/home/spuser/ydf/gromacs-2021.5/src/gromacs/utility/flags.h:124:51: error: class ‘gmx::FlagsTemplate<FlagType>’ does not have any field named ‘flags_’
  124 |     explicit FlagsTemplate(unsigned long flags) : flags_(flags) {}
      |                                                   ^~~~~~
make[2]: *** [src/gromacs/CMakeFiles/libgromacs.dir/build.make:6943: src/gromacs/CMakeFiles/libgromacs.dir/analysisdata/dataframe.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:4371: src/gromacs/CMakeFiles/libgromacs.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

作者
Author:
lyj714    时间: 2024-9-15 13:34
本帖最后由 lyj714 于 2024-9-15 13:49 编辑

你这个不是cmake和fftw的问题,是gmx的问题。你要么换成2023版本,要么把你现在这个旧版本gmx改一下文件,应该是你gcc太新导致必须显式include头文件。你把gmx源码包中src/gromacs/utility/flags.h文件中#define GMX_UTILITY_FLAGS_H下面加一行#include <cstdint>
作者
Author:
国小药    时间: 2024-9-15 16:54
lyj714 发表于 2024-9-15 13:34
你这个不是cmake和fftw的问题,是gmx的问题。你要么换成2023版本,要么把你现在这个旧版本gmx改一下文件, ...

已解决,非常感谢




欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3