- 主题:vcpkg貌似每次编译出来的lib二进制会不同
或者说MSVC每次编译出来的lib二进制会不同
就算是用vcpkg.json锁定了每个库的版本,编译器、windows sdk、编译选项都没变的情况下。
我看linux上用musl(不是在vcpkg里用musl,是单独用musl)不会有这个问题。
--
FROM 221.218.167.*
vc每次编译出来的都会不同
【 在 z16166 的大作中提到: 】
: 或者说MSVC每次编译出来的lib二进制会不同
: 就算是用vcpkg.json锁定了每个库的版本,编译器、windows sdk、编译选项都没变的情况下。
: 我看linux上用musl(不是在vcpkg里用musl,是单独用musl)不会有这个问题。
: ...................
--
FROM 221.219.211.*
你确认过是生成的指令不一样吗
如果只是timestamp那就无所谓
【 在 z16166 的大作中提到: 】
: 或者说MSVC每次编译出来的lib二进制会不同
: 就算是用vcpkg.json锁定了每个库的版本,编译器、windows sdk、编译选项都没变的情况下。
: 我看linux上用musl(不是在vcpkg里用musl,是单独用musl)不会有这个问题。
: ...................
--
FROM 104.133.9.*
很正常,这你要对比下二进制数据,看看哪些些不同。
一般情况下,考虑元信息,链接顺序,缓存,环境变量,调试以及一些参数可能就是随机初始化的
【 在 z16166 的大作中提到: 】
:
: 或者说MSVC每次编译出来的lib二进制会不同
:
: 就算是用vcpkg.json锁定了每个库的版本,编译器、windows sdk、编译选项都没变的情况下。
:
#发自zSMTH@CDU.MP
--
FROM 113.143.107.*
Msvc编译时会在目标文件里加入时间戳。所以每次肯定不同,
【 在 z16166 的大作中提到: 】
: 或者说MSVC每次编译出来的lib二进制会不同
: 就算是用vcpkg.json锁定了每个库的版本,编译器、windows sdk、编译选项都没变的情况下。
: 我看linux上用musl(不是在vcpkg里用musl,是单独用musl)不会有这个问题。
--
FROM 39.144.137.*
VC 链接器加 /Brepro 选项可以把 PE 头的时间戳变成一个 hash 值,这样就可以生成可重复的二进制文件。
不过vcpkg可能不方便设置编译时的额外选项。
【 在 z16166 的大作中提到: 】
: 或者说MSVC每次编译出来的lib二进制会不同
:
: 就算是用vcpkg.json锁定了每个库的版本,编译器、windows sdk、编译选项都没变的情况下。
: ...................
--
FROM 123.119.176.*
好的,exe/dll可以,lib还是有时间戳
【 在 milksea 的大作中提到: 】
: VC 链接器加 /Brepro 选项可以把 PE 头的时间戳变成一个 hash 值,这样就可以生成可重复的二进制文件。
: 不过vcpkg可能不方便设置编译时的额外选项。
--
FROM 221.218.167.*
只加时间戳算好的了,微软曾经利用word文档里自动写入的用户特征信息抓到过一个黑客。
--
FROM 171.213.210.*