--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
开关。
我了解共享库与静态库的重要性。但是,我遇到的几个程序建议使用
进行编译--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
开关。