thelfer/tfel

[SOLVED] [mfront] Compilation error in MFrontLogStream with GNU compilers on Linux

Closed this issue · 8 comments

Hello,
I have to install code-Aster on a linux cluster. So I need to compiler mfront.

And during the installation of mfront, I have the following error
[ 13%] Built target MFrontLogStream
/home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx: In destructor 'mfront::BehaviourProfiler::~BehaviourProfiler()
'/home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx:193:51: error: 'intmax_t' is not a member of 'std'; did you mean 'intmax_t'?
193 | using size_type = std::array<std::atomicstd::intmax_t, 23>::size_type;
| ^~~~~~~~
In file included from /home/moebs-g@univ-nantes.fr/.guix-profile/include/c++/bits/atomic_base.h:37,
from /home/moebs-g@univ-nantes.fr/.guix-profile/include/c++/atomic:50,
from /home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/include/MFront/BehaviourProfiler.hxx:28,
from /home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx:22:
/home/moebs-g@univ-nantes.fr/.guix-profile/include/stdint.h:90:33: note: 'intmax_t' declared here
90 | typedef __intmax_t intmax_t;
| ^~~~~~~~
/home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx:193:59: error: template argument 1 is invalid
193 | using size_type = std::array<std::atomicstd::intmax_t, 23>::size_type;
| ^
/home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx:193:64: error: template argument 1 is invalid
193 | using size_type = std::array<std::atomicstd::intmax_t, 23>::size_type;
| ^
/home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx:198:10: error: 'size_type' was not declared in this scope; did you mean 'size_t'?
198 | for (size_type i = 0; i + 1 != measures.size(); ++i) {
| ^~~~~~~~~
| size_t

I'm using GNU compilers :
-- The C compiler identification is GNU 14.2.0
-- The CXX compiler identification is GNU 14.2.0

I put the file mfront.log in attachment.
mfront.log.gz
mfront.log.gz
mfront.log.gz

Thank you for for help.
G Moebs

This is strange. std::intmax_t is defined in <cstdint> which is included by BehaviourProfiler.cxx, at least in the master branch.

Which version are trying to compile ?

Can you check if <cstdint> is included in BehaviourProfiler.cxx ?

Thank you for your replies.
I try to compile codeaster-prerequisites-20221225-oss

I go to the local directory .build-gcc14-openblas-ompi4/content/mfront/src

and a "\grep -i cstdint BehaviourProfiler.cxx" gives me nothing

/home/moebs-g@univ-nantes.fr/SOFT/ASTER/codeaster-prerequisites-20221225-oss/.build-gcc14-openblas-ompi4/content/mfront/src/BehaviourProfiler.cxx

yes, this one ; it doesn't contain any include of cstdint

Then you just have to add it. You probably are compiling an old version of MFront

I don't know ; the users for whom i'm doing this, gave me the link to this archive :
https://www.code-aster.org/FICHIERS/prerequisites/codeaster-prerequisites-20221225-oss.tar.gz
and everything comes from it.

Maybe it's too old ; I'll try to find a better code-aster archive.
Thank you for your help.

the users for whom i'm doing this, gave me the link to this archive :
https://www.code-aster.org/FICHIERS/prerequisites/codeaster-prerequisites-20221225-oss.tar.gz

I would simply extract the sources, modify them and recompress the archive