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
>