Мне нужно создать две сторонние разделяемые библиотеки, поэтому их файлы .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
?
Спасибо.