Бинарные различия там, где их не должно быть? [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Бинарные различия там, где их не должно быть? [закрыто]

Сообщение Anonymous »

У меня есть набор исполняемых файлов. Все они загружают общую библиотеку, назовите ее libConfig.so
Недавно я перенес некоторый код (около 200 строк). Он модифицирует 2 исполняемых файла и libConfig, но изменения libConfig не влияют на интерфейсы.
Я перекомпилировал и отличился от предыдущей версии. Как и ожидалось, два исполняемых файла и библиотека конфигурации имеют разный размер. Но ряд других библиотек и исполняемых файлов демонстрируют двоичные различия, в то время как размер файла остается прежним.
Я подумал, что это, вероятно, искусственные изменения, поэтому я обновил два исполняемых файла и библиотеку конфигурации до более старой версии.
Когда я запускаю программное обеспечение, третий исполняемый файл не выполняет проверку во время выполнения, жалуясь, что файл конфигурации не загружен. Ни одно из изменений не имеет никакого отношения к этому исполняемому файлу или файлу конфигурации, на который он жалуется.
Изменить:
Среда
Среда та же самая. Компилятор, сторонние зависимости, файлы/флаги сборки и т. д. одинаковы.
В libConfig.so была добавлена ​​структура, но эта структура не связана с неисправным исполняемым файлом.
Компилятор
Я выполняю кросс-компиляцию на x86_64 для ARM64 с использованием gcc.
Флаги компилятора: довольно стандартно:

Код: Выделить всё

-std=c++17 -fPIC -Wall -sharecd -c -pipe -march= --sysroot= -MMD -MP -Werror=return-type -O2
Добавьте к этому пару флагов -D для внутреннего использования.
Я заметил вот что:

Код: Выделить всё

/lib/ld-linux-aarch64.so.1 .........GNU ...
За которым следуют 10–15 разных байтов.
Может ли кто-нибудь объяснить такое поведение?
  • Почему в моей новой сборке происходят двоичные изменения, хотя их не должно быть?
  • Почему неизмененный исполняемый файл внезапно выдает ошибку?
    />
  • Вызывает ли проблему libConfig.so? Если да, то почему?


Подробнее здесь: https://stackoverflow.com/questions/797 ... ld-be-none
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»