在使用自动工具构建静态/共享库时,如何避免双重编译

How can I avoid a double compile when building static/shared libraries with autotools?

本文关键字:何避免 编译 共享 工具 静态 构建      更新时间:2023-10-16

我想用Autotools构建静态库和共享库。但是,这会导致双重编译,如本问题中所述。

有没有办法避免这种情况?我的第一个方法是即使在构建静态库时也能启用 -fPIC 和 -DPIC。但是,这不起作用。

我知道 -fPIC 对于静态库来说是次优的,但我更关心构建时间而不是这个特定项目的运行时效率。

根据 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28811,有一个 g++/libstdc++ 错误阻止了 PIC 代码静态链接。也许这就是你看到的问题?它应该在 4.7 中修复。

除此之外,通常的方法是在开发过程中只做一种样式(静态或共享方便)构建,然后在发布时,只需花费额外的构建时间并生成两个单独的构建,一个带有 PIC,一个没有。