--enable-static与--disable-shared

bre*_*att 2 libraries

我了解共享库与静态库的重要性。但是,我遇到的几个程序建议使用

--enable-static
Run Code Online (Sandbox Code Playgroud)

而其他推荐

--disable-shared
Run Code Online (Sandbox Code Playgroud)

这些是同一回事吗?如果没有,有什么区别?

如果可能,请举例说明何时使用另一种方法。

zwo*_*wol 7

在通常情况下,这些都是切换到由AutoconfLibtool生成的“配置”脚本的,那么它们在正式意义上是指紧密相关但又有所不同的事物。 --enable-static手段构建静态库; --disable-shared意味着不要建立共享库。

如果要确保仅获取静态库,无论如何,都需要同时提供两个选项。但是,通常只是--disable-shared会产生这种效果,因为要考虑各种可能性:如果该软件包默认情况下仅构建静态库,--disable-shared则为空。如果默认情况下同时构建静态库和共享库,则只需关闭共享库即可获得所需的内容。如果它默认情况下仅构建共享库,那么您可能会认为您需要两个选项,但是,如果您只是说--disable-shared,Libtool通常会注意到现在它被要求不构建任何东西,并假设这可能不是您想要的,并--enable-static为您拨动开关。