在使用自动工具构建静态/共享库时,如何避免双重编译
How can I avoid a double compile when building static/shared libraries with autotools?
我想用Autotools构建静态库和共享库。但是,这会导致双重编译,如本问题中所述。
有没有办法避免这种情况?我的第一个方法是即使在构建静态库时也能启用 -fPIC 和 -DPIC。但是,这不起作用。
我知道 -fPIC 对于静态库来说是次优的,但我更关心构建时间而不是这个特定项目的运行时效率。
根据 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28811,有一个 g++/libstdc++ 错误阻止了 PIC 代码静态链接。也许这就是你看到的问题?它应该在 4.7 中修复。
除此之外,通常的方法是在开发过程中只做一种样式(静态或共享方便)构建,然后在发布时,只需花费额外的构建时间并生成两个单独的构建,一个带有 PIC,一个没有。
相关文章:
- make 命令如何避免重新编译未更改的源文件?
- 实现编译检查以避免C++嵌套范围
- C++模板 - 使用"std::is_same_v"而不是专用并避免编译错误?
- 如何避免每次编译时都必须键入 -std=c++11
- 如何避免由于编译时计算的值而导致"unreachable statement"?
- 如何避免对编译后无法访问的正在运行的代码部分进行运行时检查?
- 检测或避免在编译时间上暂时提及暂时的提及
- 在编译时简化分数以避免被零除
- 避免编译开销
- 避免在使用ccache / clang编译Qt代码时出现多余的警告
- 在使用自动工具构建静态/共享库时,如何避免双重编译
- 避免使用 git 和 make 重新编译
- 避免编译时已知类型的模板冗长和动态多态性
- 如何避免模板代码中编译时常量条件"conditional expression is constant"警告?
- (避免)在C++和高效编译中将代码拆分为.cpp和.h
- 避免基于模板运算符的存在编译某些行
- 我可以在Visual Studio 2012中编译和调试(运行)单个c++文件吗?(如何避免创建太多项目)
- 如何避免重新编译头文件
- 如何避免重复初始化.mex (matlab编译代码)
- 避免编译ISO C++