我的工作在其上使用的autoconf,automake和libtool的建造项目。项目分布在二进制和源代码形式。

在Linux中,默认情况下,构建脚本链接到动态的所有库。这是有道理的,因为Linux用户可以依靠自己的发行版的包管理器来处理依赖关系。

在Windows中,默认情况下,构建脚本链接到使用静态的libtool的-all-static选项的所有库。这是有道理的,因为没有任何依赖关系提供与Windows,这是有益的,以便能够分发包含所有的依赖关系,而不是瞎分配的DLL吨的单个二进制。

在OSX,一些依赖关系是由OS提供,而一些则不是。因此,这将有助于链接到动态操作系统提供的库和静态的其他库。不幸的是libtool的是全有或全无的-all-static选项是没有帮助这里。

有没有好的办法让libtool来链接到的一些的静态库,但不是所有的?

注意:我知道我可以仔细编译依赖关系,以便只有静态的版本是可用的。但是,我宁愿为我的项目构建系统是在一般情况下稳健的静态的的动态构建依赖关系是可用的。

注意:当然,我并不关心真正的低级别依赖像C / C ++运行时库,它总是动态链接在所有上述三个平台

有帮助吗?

解决方案

经过一番研究,我已经回答了我的问题。

如果您有静态和动态建立安装库,你使用-l参数按优先链接到该库,libtool的链接,动态建立。它链接到一个静态编译,如果没有动态生成可用,或者如果您通过-static-all-static选项。

的libtool可以强制通过给予代替-l选项的完整路径库链接到静态库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top