Я хочу собрать исполняемый файл foobar
в Linux, который зависит от разделяемых библиотек, таких как libfoobar.so
. Так что я делаю
gcc foobar.o -Xlinker -rpath
относительный путь от исполняемого файла к библиотеке -lfoobar -o foobar
Я должен указать путь к библиотеке, чтобы компоновщик не жаловался, даже если библиотека не нужна во время компоновки.
Затем исполняемый файл и библиотеки устанавливаются в системные каталоги (которые не связаны с исходными расположениями и друг с другом).
После этого я не могу его запустить, поскольку путь к библиотеке, используемой для сборки, больше не действителен, а библиотека не найдена.
Как лучше всего настроить параметры компоновщика, чтобы они работали как во время соединения, так и во время выполнения?
Я не могу использовать абсолютные пути, их вообще нельзя использовать во время сборки, а также невозможно во время выполнения, так как у разных пользователей будут разные установочные корни. Только относительные пути во время сборки и выполнения гарантированно всегда будут одинаковыми.