我正在使用yaml-cpp
库,默认情况下会生成与位置相关的静态库 ( libyaml-cpp.a
)。我自己的库编译成两个版本,静态和共享。因为我需要共享一个,所以我必须打开 PIC yaml-cpp
(这是最简单的部分)。但是,现在我是否会在静态库中受到性能影响?如果是,有多大?
基本上,我有三个选择:
- 编译
yaml-cpp
两次,一次依赖于位置,一次编译,将适当的一次链接到我的共享和静态库中- 优点:可能是最好的性能,我的共享和静态都使用相同的目标文件(意味着 .cpp 只编译一次)
- 缺点:可能大多数设置,
yaml-cpp
将被编译两次,但这不重要,我不会改变它(经常)
- 编译
yaml-cpp
一次作为 PIC,将其链接到我的共享(PIC)和静态(非 PIC)- 优点:易于设置
- 缺点:源代码需要编译两次(共享(PIC),静态(非PIC))
- 编译
yaml-cpp
一次作为 PIC 并将我的(共享和静态)编译为 PIC- 优点:易于设置
- 缺点:静态性能受到轻微影响?
所以选项 1 似乎是最好的。我的摘要中有任何错误的假设吗?还是我错过了任何其他选择?
平台:amd64