我正在尝试在两台不同的机器上生成一个具有相同校验和的共享库(源代码、Linux OS、gcc、cmake、ccache、g++ 具有相同的版本。只有硬件更改)。
我试过-frandom-seed=string
标志,但不可能有相同的校验和......
有没有办法让它成为可能?
非常感谢。
西尔万
如果您使用cmake构建您的项目,然后在两个不同的服务器上具有相同的校验和,您应该在 Makefile.txt 中添加一个生成共享对象/库/可执行文件的命令。实际上,除非我们明确地对它们进行排序,否则 Cmake 并不保证目标文件的链接顺序一致。
为此,调用列表:
list(SORT <variable>)
例如,以下命令将对变量中的文件进行排序SRC_FILE
,然后用于生成共享库/对象:
list(SORT SRC_FILES)
add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SRC_FILES})
谢谢