Воспроизводимая контрольная сумма.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})
Спасибо