1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <2022> 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <2022> 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | EPICS Base 3.14.12.8 build error on CentOS 9 |
From: | Chiang, Liang-Chih [江良志] via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Thu, 6 Oct 2022 08:36:52 +0000 |
Hi,
I tried to build EPICS Base 3.14.12.8,
succeed on CentOS 8 (GCC version 8.5.0, make version 4.2.1);
failed on CentOS 9 (GCC version 11.3.1, make version 4.3).
It seemed the error is related to C++ private/protected access specifiers.
I guess that the reason is because CentOS 9's newer GCC has tightened some rules.
After modifying a file "src/cas/generic/ioBlocked.h", at line 43:
class ioBlockedList : private tsDLList<ioBlocked> {
changed to
class ioBlockedList : protected tsDLList<ioBlocked> {
Then the build succeed.
My question: is the above modification a proper fix to correct this build error.
The build log:
In file included from ../../../../src/cas/generic/caServer.cc:21:
../../../../src/cas/generic/caServerI.h: At global scope:
../../../../src/cas/generic/caServerI.h:91:5: error: ‘class tsDLList<ioBlocked> tsDLList<ioBlocked>::tsDLList’ is private within this context
91 | tsDLList < casStrmClient > clientList;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../../../../src/cas/generic/caServerI.h:33,
from ../../../../src/cas/generic/caServer.cc:21:
../../../../src/cas/generic/ioBlocked.h:43:7: note: declared private here
43 | class ioBlockedList : private tsDLList<ioBlocked> {
| ^~~~~~~~~~~~~
In file included from ../../../../src/cas/generic/caServer.cc:21:
../../../../src/cas/generic/caServerI.h:92:5: error: ‘class tsDLList<ioBlocked> tsDLList<ioBlocked>::tsDLList’ is private within this context
92 | tsDLList < casIntfOS > intfList;
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../../../../src/cas/generic/caServerI.h:33,
from ../../../../src/cas/generic/caServer.cc:21:
../../../../src/cas/generic/ioBlocked.h:43:7: note: declared private here
43 | class ioBlockedList : private tsDLList<ioBlocked> {
| ^~~~~~~~~~~~~
make[4]: *** [../../../../configure/RULES_BUILD:220: caServer.o] Error 1
make[4]: Leaving directory '/home/chiang.lc/base-3.14.12.8/src/cas/build/O.linux-x86_64'
make[3]: *** [../../../configure/RULES_ARCHS:61: install.linux-x86_64] Error 2
make[3]: Leaving directory '/home/chiang.lc/base-3.14.12.8/src/cas/build'
make[2]: *** [../../configure/RULES_DIRS:83: build.install] Error 2
make[2]: Leaving directory '/home/chiang.lc/base-3.14.12.8/src/cas'
make[1]: *** [../configure/RULES_DIRS:83: cas.install] Error 2
make[1]: Leaving directory '/home/chiang.lc/base-3.14.12.8/src'
make: *** [configure/RULES_DIRS:83: src.install] Error 2Best regards.
LiangChih Chiang NSRRC Beamline group |