在静态库中硬编码的代码文件和标头路径?

时间:2014-10-18 11:42:05

标签: c++ static-libraries filepath

我在十六进制编辑器中打开了一个静态库(用VC ++编译),我看到了所有代码文件和标题的路径。我不明白他们在那里服务的目的。
有没有办法让将它们嵌入到二进制文件中?我已经完成了所有选项(我认为)但找不到任何东西。

1 个答案:

答案 0 :(得分:2)

是的,编译器在静态库中嵌入了大量上下文信息。请记住,静态库是一个非常弱的代码抽象,它只不过是一包.obj文件。可以把它想象成一个压缩率很低的.zip文件:)

对这些信息有一个非常严格的要求,工具链的其余部分依赖于它。与库管理器一样,它需要合并程序数据库。在链接器中,它需要能够重新启动编译器的后端,以使用配置文件引导的优化数据重建二进制文件。

可能你看到了什么,/ GL编译选项嵌入了编译器使用的命令行。因此,使用完全相同的编译选项可以正确完成PGO。值得注意的是,对于客户端程序员来说,非常方便,他可以对他需要使用的编译选项进行反向工程,以便能够正确链接您的库。每个人忘记记录的一个非常重要的细节:)

请注意,您无法合理地删除此信息,PGO很重要。如果您不喜欢此类信息泄露,请使用构建服务器或运送二进制文件而不是库。一个DLL。