Связывание определенного общего объекта - PullRequest
0 голосов
/ 18 октября 2018

Я использую cmake и пытаюсь найти ссылку на определенный общий объект.Например, libva-wayland имеет 2 общих объекта libva-wayland.so и libva-wayland.so.1.В этом случае указание библиотеки автоматически создает зависимость от последнего.

Даже при явном указании файла в CMakeLists.txt как таковом, target_link_libraries(${PROJECT_NAME} usr/lib/x86_64-linux-gnu/libva-x11.so..., он все равно ссылается на usr/lib/x86_64-linux-gnu/libva-x11.so.1.

Я проверяю конкретный, чтобы мой двоичный файл был связан с использованиемldd

Я понимаю, что мы хотим сохранить ссылки, указанные следующим образом, потому что вы хотите убедиться, что используется правильная версия, но я хочу развернуть на другой системе, которая использует версию 2.xx libvaи зависимость от 1.xx заставляет его не работать в этой системе.

Это достижимо?Я предполагаю, что мне, возможно, придется внести некоторые изменения в ldconfig?

Спасибо

1 Ответ

0 голосов
/ 20 октября 2018

Я хочу развернуть на другой системе, которая использует версию 2.xx libva, и зависимость от 1.xx приводит к тому, что она не работает в этой системе.

Этосделано по проекту .

желательно , чтобы ваша программа, связанная с 1.x версией библиотеки, не запускалась в системе 2.x, потому что эти библиотекиимеют разные ABI.Если бы этой программе было разрешено запускаться, она, вероятно, вылетала бы.

Подробнее о версиях внешней библиотеки здесь .

TL; DR: Если вы хотите, чтобы ваша программа работала наВ 2.x системе вы должны собрать ее из заголовков и библиотек, которые сами 2.x. невозможно создать один исполняемый файл, который будет работать как на 1.x, так и на 2.x.

...