Нужно ли указывать опцию компоновщика -Wl,-rpath-link=dir для всех необходимых путей поиска зависимостей библиотеки?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Нужно ли указывать опцию компоновщика -Wl,-rpath-link=dir для всех необходимых путей поиска зависимостей библиотеки?

Сообщение Anonymous »

У меня есть следующая структура проекта, где libb.so зависит от liba.so, libc.so зависит от libb.so и libd.so зависит от libc.so
abcd
├── a
│ ├── lib.cpp
│ ├── lib.o
│ └── liba.so
├── b
│ ├── lib.cpp
│ ├── lib.o
│ └── libb.so
├── c
│ ├── lib.cpp
│ ├── lib.o
│ └── libc.so
└── d
├── lib.cpp
├── lib.o
└── libd.so

Я компилирую все вышеуказанные библиотеки, как показано ниже
liba.so
gcc -c -Wall -fPIC lib.cpp
gcc -shared -o liba.so lib.o

libb.so
gcc -c -Wall -fPIC lib.cpp
gcc -shared -o libb.so lib.o -L../a -la

libc.so
gcc -c -Wall -fPIC lib.cpp
gcc -shared -o libc.so lib.o -L../b -Wl,-rpath-link=$(pwd)../a -lb

libd.so
gcc -c -Wall -fPIC lib.cpp

Чтобы сгенерировать libd.so, какая из приведенных ниже команд является правильной? На данный момент обе команды создают libd.so, но хотелось бы узнать идиоматическую.
gcc -shared -o libd.so lib.o -L../c -Wl,-rpath-link=$(pwd)../b -Wl,-rpath-link=$(pwd)../a -lc

Или
gcc -shared -o libd.so lib.o -L../c -Wl,-rpath-link=$(pwd)../b -lc


Подробнее здесь: https://stackoverflow.com/questions/798 ... e-necessar
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»