Мне нужно собрать две сторонние разделяемые библиотеки, чтобы их .so файлы были использованы в других проектах. Однако после сборки одна из этих библиотек содержит жестко заданный путь к другой. Этот путь недопустим на других компьютерах и вызывает предупреждения компоновщика. Как я могу предотвратить внедрение полного пути в итоговые файлы .so?
подробности:
Первый источник библиотеки: ~/dev/A
Второй источник библиотеки: ~/dev/B
У них обоих есть скрипт configure
для генерации файлов make. Библиотека B
зависит от A
. Итак, сначала я строю A
:
$ ~/dev/A/configure --prefix=~/dev/A-install
$ make && make install
Тогда я строю B
:
$ ~/dev/B/configure --prefix=~/dev/B-install --with-A=~/dev/A-install
$ make && make install
Затем я хочу загрузить содержимое ~/dev/A-install
и ~/dev/B-install
на наш файловый сервер, чтобы другие команды и машины сборки могли использовать двоичные файлы. Но они получают предупреждения компоновщика, когда пытаются использовать B
:
/usr/bin/ld: warning: libA.so.2, needed by /.../deps/B/lib/libB.so, not found (try using -rpath or -rpath-link)
Когда я запускаю ldd libB.so
, это дает:
...
libA.so.2 => /home/alex/dev/A-install/lib/libA.so.2
Очевидно, этот путь существует только на моей машине и не может быть найден на других машинах.
Как удалить полный жестко заданный путь из libB.so
?
Спасибо.