У меня есть исполняемый файл, который связан с двумя общими библиотеками, каждая из которых имеет зависимости от системных общих библиотек.(В данном случае это библиотеки времени выполнения OpenCL и CUDA, но это не влияет на проблему)
+--> libA.so ---> libOpenCL.so (on system)
Exe -|
+--> libB.so ---> libcudart.so (on system)
Exe
вместе с libA.so
и libB.so
передаются пользователю.Возможно, пользователь не установил libOpenCL.so
и / или libcudart.so
в своей системе.
Цель состоит в том, чтобы Exe
мог запускаться в любом случае и обнаруживать во время выполнения, что, например, libA.so
не можетбыть загружен, потому что его зависимости не встречаются.
Одна из возможностей - сделать так, чтобы libA.so
загружался во время выполнения, используя dlopen()
, где он обнаруживает, если загрузка не удалась.
Isтакже возможно нормально связать libA.so
с Exe
, но таким образом, что Exe
все еще может запускаться, если libA.so
не может быть загружен?Это возможно на платформах Linux и / или Windows?