Как настроить сборку и запуск исполняемого файла, который устанавливается в зависимости от разделяемых библиотек - PullRequest
1 голос
/ 02 июня 2019

Я хочу собрать исполняемый файл foobar в Linux, который зависит от разделяемых библиотек, таких как libfoobar.so. Так что я делаю

gcc foobar.o -Xlinker -rpath относительный путь от исполняемого файла к библиотеке -lfoobar -o foobar

Я должен указать путь к библиотеке, чтобы компоновщик не жаловался, даже если библиотека не нужна во время компоновки.

Затем исполняемый файл и библиотеки устанавливаются в системные каталоги (которые не связаны с исходными расположениями и друг с другом).

После этого я не могу его запустить, поскольку путь к библиотеке, используемой для сборки, больше не действителен, а библиотека не найдена.

Как лучше всего настроить параметры компоновщика, чтобы они работали как во время соединения, так и во время выполнения?

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

...