可选的共享库

mak*_*ako 11 c++ shared-libraries dynamic-linking

我注意到取决于共享库的应用程序失败:如果您缺少某些依赖项,即使用户无意使用依赖项的功能,应用程序也会在加载时失败.

我希望我的应用程序比这更好.理想情况下,而不是分配n个不同的包,其中n = numberOfSupportedArchitectures*numberOfSupportedOS*Π(对于每个共享库)(备选方案的数量) 我会在加载时发出"加载共享库时出错"异常我想 - 但不需要 - 的库被发现不存在,然后以一种简单避免使用未解决的链接的方式继续执行.但显然,人们无法捕捉到这一点.如果缺少某些东西,那么在main()开始之前它都会崩溃.

我可以控制加载过程最接近的是使用dlopen,dlsym等解决所有链接.太无聊了.我希望有一个图书馆可供我这样做吗?

我注意到这不会是基于源的发行版或Windows上的问题.我打算在标签中放入二进制包,但显然我没有硬币标签的代表.

'似乎最优雅的解决方案在于改进OS的加载器/链接器的行为.

gen*_*ult 0

您可以自己包含共享库并通过 调整链接器搜索路径-rpath $ORIGIN