我已经创建了一个静态链接到几个不同应用程序的通信库。该库为通过不同种类的硬件进行通信提供支持。某些硬件通过共享库从供应商处获得支持。在没有这些硬件的系统上,共享库不可用。取决于共享库的静态库
以前我们通过编译通信库和应用程序的双重版本来处理这个问题。然而,这不是很实用,所以我想过使用更加动态的通信库,如果可用,它会尝试使用dlopen()/ dlsym()加载供应商库。这似乎运作良好。但一个问题是,每个使用我的库的人在将他们的应用程序与我的库链接时都需要传递-ldl选项。即使这是一个小小的麻烦,我想知道这通常如何解决。
是否有可能创建一个静态库,它会自动地(在编译时或运行时)引入所需的共享库?
让静态库依赖共享库是否被认为是一种好的做法?
编辑:我知道,libtool可能可以解决这个问题,但这仍然会改变所有应用程序的构建过程,我更愿意避免。
编辑2:目标平台主要是Linux和Solaris。 Gcc作为编译器。
什么是操作系统?这很难回答,除非你更具体... – bdonlan 2010-08-30 12:30:31
对不起,忘了提及操作系统。编辑添加。 – matli 2010-08-30 12:43:07