Когда я копирую свой исполняемый файл и зависимости lib на другой компьютер и запускаю программу, я получаю эту ошибку:
Эта программа была скомпилирована с версией 2.6.1 библиотеки времени выполнения Protocol Buffer, котораянесовместим с установленной версией (3.5.0).Свяжитесь с автором программы для обновления.Если вы скомпилировали программу самостоятельно, убедитесь, что ваши заголовки относятся к той же версии буферов протокола, что и ваша библиотека времени компоновки.
Эта ошибка возникает только на новом компьютере.Я могу запустить свою программу на своем компьютере без каких-либо проблем.
Я попытался проверить с помощью ldd -d
и objdump -p engine | grep NEEDED
, какие из библиотек имеют протобуф в них, но я не могу их найти.
Моя программа использует: opencv с Cuda, boost, tenorflow, tenorRT.
Обе компьютерные ОС Ubuntu 16.04.6 LTS.
Как узнать, какая часть имеетпроблема с этим конфликтом?
Я попытался перекомпилировать opencv без protobuf, добавив -DBUILD_PROTOBUF=OFF -DPROTOBUF_UPDATE_FILES=ON -DPROTOBUF_INCLUDE_DIR=/usr/include -DPROTOBUF_LIBRARY=/usr/lib/x86_64-linux-gnu/libprotobuf.so
.
Это не решило проблему.