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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: EDM in RHEL8 or Centos8 |
From: | "Williams Jr., Ernest L. via Tech-talk" <tech-talk at aps.anl.gov> |
To: | Ernesto Paiser <ernesto_paiser at lynceantech.com>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Fri, 3 Apr 2020 15:59:45 +0000 |
Response below
From: Ernesto Paiser <ernesto_paiser at lynceantech.com>
Sent: Friday, April 3, 2020 8:46 AM To: Williams Jr., Ernest L. <ernesto at slac.stanford.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: EDM in RHEL8 or Centos8 Hi Ernest,
I'm doing well. Regardless someone here may have got the covid... Hope you are as well as, safe and healthy! <ELW>
We are hanging in there.
Shelter In Place 🙂
<ELW>
This message you got is because the gif.cc should check the giflib
version and set the #define accordingly, but isn't working. giflib has changed the definition for the functions: DGifCloseFile and DGifOpenFileName since version 5 adding an additional parameter *errno for the arguments. If you force to compile with giflib version 5.1 you'll get rid of this error, but you may found others like me. To make a test just modify gif.cc as: //#if GIFLIB_MAJOR > 5 || GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1 #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif, NULL) #define GIF_OPEN_FILE(gif) DGifOpenFileName(gif, NULL) //#else // #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif) // #define GIF_OPEN_FILE(gif) DGifOpenFileName(gif) //#endif and compile again. <ELW>
That stanza needs to be moved below the "#include "gif.h""
gif.h which includes gif_lib.h which defines
GIFLIB_MAJOR and GIFLIB_MINOR
I guess this went unnoticed for a long time
🙁
Version logic is working now.
<ELW>
Let me know if you make some progress, Thanks <ELW>
Next, issue is linking error; seems that libungif is needed
make[1]: Entering directory '/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/giflib/O.linux-x86_64'
/usr/bin/g++ -o libcf322683-513e-4570-a44b-7cdd7cae0de5.so -shared -fPIC -Wl,-hlibcf322683-513e-4570-a44b-7cdd7cae0de5.so -L/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/lib/linux-x86_64 -L/usr/lib64 -Wl,-rpath,/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/lib/linux-x86_64
-Wl,-rpath,/usr/lib64 -rdynamic -m64 gif.o reg_libcf322683-513e-4570-a44b-7cdd7cae0de5.o -lEdmBase -lcfcaa62e-8199-11d3-a77f-00104b8742df -l114135a4-6f6c-11d3-95bc-00104b8742df -lXm -lXt -lXp -lXtst -lX11 -lpthread -ldl -lungif -lgif
-lpthread -lreadline -lncurses -lm -lrt -ldl -lgcc
/usr/bin/ld: cannot find -lungif
collect2: error: ld returned 1 exit status<ELW>
Ernesto
On 4/3/20 7:49 AM, Williams Jr., Ernest L. wrote: > Hi Ernesto, > How is it going? > > Our production systems are using mainly RHEL6 and RHEL7. > I have started looking ahead to RHEL 8. > > What version of EDM are you using there? > > Please provide more detail: > > 1. Version of EPICS > 2. Version of EDM > 3. Version of giflib > > Here is what I have on my centos8 box: > OS = CentOS Linux release 8.1.1911 (Core) > EPICS BASE = 7.0.3.1 > EDM = 1.12.105B > GIFLIB = giflib-devel-5.1.4-3.el8.x86_64 > > Looks like we have a problem. > Here is my error message: > > make -C ./giflib install > make[1]: Entering directory > '/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/giflib' > make -C O.linux-x86_64 -f ../Makefile TOP=../.. \ > T_A=linux-x86_64 install > make[2]: Entering directory > '/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/giflib/O.linux-x86_64' > /usr/bin/g++ -D_GNU_SOURCE -D_DEFAULT_SOURCE -D_X86_64_ > -DUNIX -Dlinux -O3 -Wall -std=c++98 -fpermissive > -Wno-write-strings -DNO_UNORDERED_MAP -DSINGLE_THREADED=1 -D__epics__=1 > -mtune=generic -m64 -fPIC -I. -I../O.Common -I. -I. -I.. > -I../../include/compiler/gcc -I../../include/os/Linux -I../../include > > -I/usr/local/controlsDev/epics/base/R7.0.3.1-1.0/include/compiler/gcc > -I/usr/local/controlsDev/epics/base/R7.0.3.1-1.0/include/os/Linux > -I/usr/local/controlsDev/epics/base/R7.0.3.1-1.0/include > -I../../util -I../../edmlib -I/usr/include -I/usr/include/X11 -c > ../gif.cc > ../gif.cc: In constructor ‘activeGifClass::activeGifClass(const > activeGifClass*)’: > ../gif.cc:245:5: warning: variable ‘status’ set but not used > [-Wunused-but-set-variable] > int status; > ^~~~~~ > ../gif.cc: In member function ‘int activeGifClass::readGifFile()’: > ../gif.cc:24:50: error: too few arguments to function ‘GifFileType* > DGifOpenFileName(const char*, int*)’ > #define GIF_OPEN_FILE(gif) DGifOpenFileName(gif) > ^ > ../gif.cc:442:11: note: in expansion of macro ‘GIF_OPEN_FILE’ > gif = GIF_OPEN_FILE( name ); > ^~~~~~~~~~~~~ > In file included from ../gif.h:28, > from ../gif.cc:39: > /usr/include/gif_lib.h:179:14: note: declared here > GifFileType *DGifOpenFileName(const char *GifFileName, int *Error); > ^~~~~~~~~~~~~~~~ > ../gif.cc:23:48: error: too few arguments to function ‘int > DGifCloseFile(GifFileType*, int*)’ > #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif) > ^ > ../gif.cc:898:12: note: in expansion of macro ‘GIF_CLOSE_FILE’ > status = GIF_CLOSE_FILE( gif ); > ^~~~~~~~~~~~~~ > In file included from ../gif.h:28, > from ../gif.cc:39: > /usr/include/gif_lib.h:183:9: note: declared here > int DGifCloseFile(GifFileType * GifFile, int *ErrorCode); > ^~~~~~~~~~~~~ > ../gif.cc:23:48: error: too few arguments to function ‘int > DGifCloseFile(GifFileType*, int*)’ > #define GIF_CLOSE_FILE(gif) DGifCloseFile(gif) > ^ > ../gif.cc:910:30: note: in expansion of macro ‘GIF_CLOSE_FILE’ > if ( fileOpened ) status = GIF_CLOSE_FILE( gif ); > ^~~~~~~~~~~~~~ > In file included from ../gif.h:28, > from ../gif.cc:39: > /usr/include/gif_lib.h:183:9: note: declared here > int DGifCloseFile(GifFileType * GifFile, int *ErrorCode); > ^~~~~~~~~~~~~ > make[2]: *** > [/usr/local/controlsDev/epics/base/R7.0.3.1-1.0/configure/RULES_BUILD:251: > gif.o] Error 1 > make[2]: Leaving directory > '/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/giflib/O.linux-x86_64' > make[1]: *** > [/usr/local/controlsDev/epics/base/R7.0.3.1-1.0/configure/RULES_ARCHS:58: install.linux-x86_64] > Error 2 > make[1]: Leaving directory > '/usr/local/controlsDev/epics/extensions/edm/R1.12.105B-1.2.0/giflib' > make: *** > [/usr/local/controlsDev/epics/base/R7.0.3.1-1.0/configure/RULES_DIRS:84: > giflib.install] Error 2' > > > Cheers, > Ernesto > |