Building gmic on rhel 9.. requirements?

Having trouble building gmic
I’m guessing I’m missing a required library

# make gmic
g++ -o gmic gmic_cli.cpp
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `main':
gmic_cli.cpp:(.text+0x1a5): undefined reference to `gmic::init_rc(char const*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x221): undefined reference to `gmic::gmic<float>(char const*, char const*, bool, float*, bool*, float const&)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x25f): undefined reference to `gmic::set_variable(char const*, char, char const*, double, unsigned int const*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x28f): undefined reference to `gmic::add_commands(char const*, char const*, bool, unsigned int*, unsigned int*, bool*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x2fd): undefined reference to `gmic::path_rc(char const*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x439): undefined reference to `gmic::add_commands(char const*, char const*, bool, unsigned int*, unsigned int*, bool*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x4c2): undefined reference to `gmic::path_user(char const*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x5b0): undefined reference to `gmic::add_commands(char const*, char const*, bool, unsigned int*, unsigned int*, bool*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x96e): undefined reference to `gmic::gmic<float>(char const*, char const*, bool, float*, bool*, float const&)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x9af): undefined reference to `gmic::add_commands(_IO_FILE*, char const*, bool, unsigned int*, unsigned int*, bool*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x9de): undefined reference to `gmic::hashcode(char const*, bool)'
/usr/bin/ld: gmic_cli.cpp:(.text+0xa2c): undefined reference to `bool gmic::search_sorted<gmic_library::gmic_list<char> >(char const*, gmic_library::gmic_list<char> const&, unsigned int, unsigned int&)'
/usr/bin/ld: gmic_cli.cpp:(.text+0xa8f): undefined reference to `gmic::~gmic()'
/usr/bin/ld: gmic_cli.cpp:(.text+0xfa7): undefined reference to `gmic& gmic::run<float>(char const*, gmic_library::gmic_list<float>&, gmic_library::gmic_list<char>&)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x1024): undefined reference to `gmic::~gmic()'
/usr/bin/ld: gmic_cli.cpp:(.text+0x1161): undefined reference to `gmic::~gmic()'
/usr/bin/ld: gmic_cli.cpp:(.text+0x13e7): undefined reference to `gmic::stdlib'
/usr/bin/ld: gmic_cli.cpp:(.text+0x14d1): undefined reference to `gmic::gmic<float>(char const*, gmic_library::gmic_list<float>&, gmic_library::gmic_list<char>&, char const*, bool, float*, bool*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x14e4): undefined reference to `gmic::~gmic()'
/usr/bin/ld: gmic_cli.cpp:(.text+0x15c4): undefined reference to `gmic::stdlib'
/usr/bin/ld: gmic_cli.cpp:(.text+0x161a): undefined reference to `gmic::gmic<float>(char const*, gmic_library::gmic_list<float>&, gmic_library::gmic_list<char>&, char const*, bool, float*, bool*)'
/usr/bin/ld: gmic_cli.cpp:(.text+0x162d): undefined reference to `gmic::~gmic()'
/usr/bin/ld: gmic_cli.cpp:(.text+0x16ee): undefined reference to `gmic::~gmic()'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::screen_width()':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay12screen_widthEv[_ZN12gmic_library11CImgDisplay12screen_widthEv]+0x2c): undefined reference to `XOpenDisplay'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay12screen_widthEv[_ZN12gmic_library11CImgDisplay12screen_widthEv]+0x98): undefined reference to `XCloseDisplay'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::screen_height()':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay13screen_heightEv[_ZN12gmic_library11CImgDisplay13screen_heightEv]+0x2c): undefined reference to `XOpenDisplay'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay13screen_heightEv[_ZN12gmic_library11CImgDisplay13screen_heightEv]+0x98): undefined reference to `XCloseDisplay'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_handle_events(_XEvent const*)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x1ac): undefined reference to `XUnmapWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x20c): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x2d9): undefined reference to `XResizeWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x3a6): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x3fa): undefined reference to `XGetWindowAttributes'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x416): undefined reference to `XSync'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x44f): undefined reference to `XSetInputFocus'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x592): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x70d): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x751): undefined reference to `XLookupString'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x78b): undefined reference to `XQueryKeymap'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x816): undefined reference to `XLookupString'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x864): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x948): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent[_ZN12gmic_library11CImgDisplay14_handle_eventsEPK7_XEvent]+0x9be): undefined reference to `XCheckWindowEvent'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_events_thread(void*)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_events_threadEPv[_ZN12gmic_library11CImgDisplay14_events_threadEPv]+0x6f): undefined reference to `XCheckTypedEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay14_events_threadEPv[_ZN12gmic_library11CImgDisplay14_events_threadEPv]+0x9a): undefined reference to `XCheckMaskEvent'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_set_colormap(unsigned long&, unsigned int)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay13_set_colormapERmj[_ZN12gmic_library11CImgDisplay13_set_colormapERmj]+0x2ac): undefined reference to `XStoreColors'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_map_window()':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay11_map_windowEv[_ZN12gmic_library11CImgDisplay11_map_windowEv]+0x40): undefined reference to `XMapRaised'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay11_map_windowEv[_ZN12gmic_library11CImgDisplay11_map_windowEv]+0x69): undefined reference to `XWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay11_map_windowEv[_ZN12gmic_library11CImgDisplay11_map_windowEv]+0xbe): undefined reference to `XGetWindowAttributes'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay11_map_windowEv[_ZN12gmic_library11CImgDisplay11_map_windowEv]+0xd7): undefined reference to `XSync'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_paint(bool)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6_paintEb[_ZN12gmic_library11CImgDisplay6_paintEb]+0x10f): undefined reference to `XSendEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6_paintEb[_ZN12gmic_library11CImgDisplay6_paintEb]+0x18e): undefined reference to `XPutImage'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_init_fullscreen()':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x94): undefined reference to `XDefaultScreen'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0xa4): undefined reference to `XBlackPixel'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x105): undefined reference to `XCreateWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x139): undefined reference to `XSelectInput'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x156): undefined reference to `XMapRaised'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x17f): undefined reference to `XWindowEvent'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x1ae): undefined reference to `XGetWindowAttributes'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay16_init_fullscreenEv[_ZN12gmic_library11CImgDisplay16_init_fullscreenEv]+0x1ca): undefined reference to `XSync'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_desinit_fullscreen()':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay19_desinit_fullscreenEv[_ZN12gmic_library11CImgDisplay19_desinit_fullscreenEv]+0x35): undefined reference to `XUngrabKeyboard'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay19_desinit_fullscreenEv[_ZN12gmic_library11CImgDisplay19_desinit_fullscreenEv]+0x5f): undefined reference to `XDestroyWindow'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::_assign(unsigned int, unsigned int, char const*, unsigned int, bool, bool)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x100): undefined reference to `XOpenDisplay'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x343): undefined reference to `XVisualIDFromVisual'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x369): undefined reference to `XGetVisualInfo'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x3b5): undefined reference to `XFree'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x5be): undefined reference to `XCreateWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x637): undefined reference to `XCreateSimpleWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x66e): undefined reference to `XSelectInput'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x6b0): undefined reference to `XStoreName'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x710): undefined reference to `XCreateColormap'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x771): undefined reference to `XSetWindowColormap'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x776): undefined reference to `XAllocClassHint'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x7b5): undefined reference to `XSetClassHint'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x7c1): undefined reference to `XFree'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x8d1): undefined reference to `XCreateImage'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x8fc): undefined reference to `XInternAtom'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x923): undefined reference to `XInternAtom'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x961): undefined reference to `XSetWMProtocols'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb[_ZN12gmic_library11CImgDisplay7_assignEjjPKcjbb]+0x9a3): undefined reference to `XGrabKeyboard'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::assign()':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6assignEv[_ZN12gmic_library11CImgDisplay6assignEv]+0x154): undefined reference to `XFreeColormap'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6assignEv[_ZN12gmic_library11CImgDisplay6assignEv]+0x16e): undefined reference to `XDestroyWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6assignEv[_ZN12gmic_library11CImgDisplay6assignEv]+0x17f): undefined reference to `XSync'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::resize(int, int, bool)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6resizeEiib[_ZN12gmic_library11CImgDisplay6resizeEiib]+0x23c): undefined reference to `XResizeWindow'
/usr/bin/ld: gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay6resizeEiib[_ZN12gmic_library11CImgDisplay6resizeEiib]+0x260): undefined reference to `XGetWindowAttributes'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `gmic_library::CImgDisplay::move(int, int)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay4moveEii[_ZN12gmic_library11CImgDisplay4moveEii]+0x84): undefined reference to `XMoveWindow'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `void gmic_library::CImgDisplay::_resize<unsigned char>(unsigned char, unsigned int, unsigned int, bool)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_resizeIhEEvT_jjb[_ZN12gmic_library11CImgDisplay7_resizeIhEEvT_jjb]+0x12d): undefined reference to `XCreateImage'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `void gmic_library::CImgDisplay::_resize<unsigned short>(unsigned short, unsigned int, unsigned int, bool)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_resizeItEEvT_jjb[_ZN12gmic_library11CImgDisplay7_resizeItEEvT_jjb]+0x135): undefined reference to `XCreateImage'
/usr/bin/ld: /tmp/ccTMoUFg.o: in function `void gmic_library::CImgDisplay::_resize<unsigned int>(unsigned int, unsigned int, unsigned int, bool)':
gmic_cli.cpp:(.text._ZN12gmic_library11CImgDisplay7_resizeIjEEvT_jjb[_ZN12gmic_library11CImgDisplay7_resizeIjEEvT_jjb]+0x135): undefined reference to `XCreateImage'
collect2: error: ld returned 1 exit status
make: *** [Makefile:437: gmic] Error 1
make cli

?

CImg.h:609:10: fatal error: ImfRgbaFile.h: No such file or directory
609 | #include “ImfRgbaFile.h”

I guess that’s openexr, guess I gotta find a repository for that, as it’s not found.

Well, I’m stuck, can’t install openexr-devel… Is that really needed for
command line usage of gmic? is there an rpm build of gmic for redhat 9?

#rpm -Uvh openexr-devel-3.1.1-2.el9.x86_64.rpm
error: Failed dependencies:
pkgconfig(Imath) is needed by openexr-devel-3.1.1-2.el9.x86_64

dnf install pkgconfig

Last metadata expiration check: 0:34:08 ago on Mon 16 Oct 2023 09:59:01 AM EDT.
Package pkgconf-pkg-config-1.7.3-10.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

Have you done ‘make cli’ command?

yeah, I get this error:
Package ‘OpenEXR’, required by ‘virtual:world’, not found
Package OpenEXR was not found in the pkg-config search path.

CImg.h:609:10: fatal error: ImfRgbaFile.h: No such file or directory
609 | #include “ImfRgbaFile.h”
]

trying to install it, its there, but I think they need devel headers
dnf install OpenEXR
Last metadata expiration check: 1:13:29 ago on Mon 16 Oct 2023 09:59:01 AM EDT.
Package openexr-3.1.1-2.el9.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

You can disable open-exr support, with:

$ make OPENEXR_CFLAGS="" OPENEXR_LIBS="" cli

And you can do the same for almost any dependency defined in the Makefile.

1 Like

Thank you! that worked great.

1 Like