Воспроизводимая контрольная сумма.so файл на другом компьютере

Я пытаюсь создать общую библиотеку с одинаковой контрольной суммой на двух разных компьютерах (исходный код, ОС Linux, gcc, cmake, ccache, g++ имеют одинаковую версию. Только смена оборудования).

Я старался -frandom-seed=string флаг, но невозможно иметь одинаковую контрольную сумму...

Есть ли способ сделать это возможным?

Спасибо большое.

Сильвен

1 ответ

Если вы используете cmake для создания своего проекта, чтобы иметь одинаковые контрольные суммы на двух разных серверах, вы должны добавить в ваш файл Makefile.txt команду, которая генерирует общий объект / библиотеку / исполняемый файл. На самом деле, Cmake не гарантирует последовательный порядок связывания объектных файлов, если мы не сортируем их явно.
Для этого вызовите список:

list(SORT <variable>)

Например, следующая команда будет сортировать файлы в переменной SRC_FILE, которые затем используются для генерации разделяемой библиотеки / объекта:

list(SORT SRC_FILES)
add_library(${PROJECT_NAME} SHARED ${HEADER_FILES} ${SRC_FILES})

Спасибо

Другие вопросы по тегам