--enable-static 与 --disable-shared

--enable-static vs --disable-shared

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

进行编译
--enable-static

而其他推荐

--disable-shared

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

如果可能,请举例说明何时使用一种而不是另一种。

在通常情况下,这些是 Autoconf and Libtool 生成的 "configure" 脚本的开关,那么它们正式表示 closely-related,但不同的东西。 --enable-static表示do构建静态库; --disable-shared 表示 构建共享库。

如果你想确保只获得静态库,无论如何,你需要给两个选项。然而,通常只有 --disable-shared 会产生这种效果,因为考虑到以下可能性:如果包默认只构建静态库,那么 --disable-shared 就是 no-op;如果它默认同时构建静态库和共享库,那么您只需关闭共享库即可获得所需内容;如果它默认仅构建 shared 库,那么您可能认为您需要两个选项,但如果您只说 --disable-shared,Libtool 通常会注意到它现在被要求构建 nothing,假设这不可能是您想要的,然后为您打开 --enable-static 开关。