Здравствуйте,
Toolkit-ы не использую.
Самый очевидный способ - это при сборке пускового файла поставить на компьютер все нужные библиотеки x11 и wayland одновременно. Это позволяет собрать результат, но это также требует в зависимостях пакета указывать runtime-версии всех нужных библиотек опять же и под x11, и под wayland. В результате при установке пакета в систему влетят библиотеки из другого дисплейного менеджера, что вроде бы некритично, но может и не очень красиво выглядит. Это правильный способ или можно всё решить как-то изящнее? Например, можно сделать экспорт функций из runtime-библиотек, тогда эти библиотеки не будут явно требоваться при старте приложения. Плюс вроде в этом есть, но как-то всё это стрёмно выглядит. И если экспорт функций в x11 прокатывает без проблем
void* handle=dlopen("libX11.so.6", RTLD_LAZY);
if (!handle)
{
fprintf(stderr, "Failed to load libX11.so.6: %s\n", dlerror());
return false;
}
exp_XConvertSelection=(PFN_XConvertSelection)dlsym(handle, "XConvertSelection");
exp_XGetWindowAttributes=(PFN_XGetWindowAttributes)dlsym(handle, "XGetWindowAttributes");
, то wayland вообще обрубил меня на первой же функции:
uint32_t wlnd_proxy_get_version(struct wl_proxy *proxy)
Даже выбросив все обращения на функцию wlnd_proxy_get_version в программе я всё равно получаю на ней ошибку линковки, потому что wayland где-то внутри всё равно к ней обращается.
Таким образом мне нужно просто понять, стоит ли тут мудрить или просто кидаешь в пакет двойные зависимости и спишь спокойно ?