Как разрешить связывание разделяемой библиотеки во время компиляции (GCC)? - PullRequest
2 голосов
/ 18 декабря 2009

Я построил libshared.so с зависит от libshared_dependent.so

Теперь я компилирую app.bin , который использует libshared.so , Теперь во время компиляции gcc хочет, чтобы я указал -lshared_dependent в противном случае выдает ошибку, что некоторые символы не найдены.

Есть ли способ, которым во время компиляции мне не нужно указывать -lshared_dependent , я хочу, чтобы просто указание -lshared работало?

Ответы [ 2 ]

4 голосов
/ 18 декабря 2009

Вам просто нужно связать libshared.so с libshared_dependent.so, когда вы создаете libshared.so.

gcc -shared -o libshared.so -lshared_dependant file1.o file2.o 

Таким образом, когда вы связываете свое приложение с libshared.so, оно также ссылается на то, что libshared.so зависит от

1 голос
/ 18 декабря 2009

Вам не нужно иметь ссылку app.bin с libshared_dependent.so.

Тем не менее, компоновщик захочет проверить символы в libshared.so, поэтому он должен найти libshared_dependent.so, чтобы сделать это. Если libshared_dependent.so находится в другом каталоге, чем libshared.so, вы можете указать путь к libshared_dependent.so, используя опцию компоновщика -rpath-link.

Поскольку -rpath-link является опцией компоновщика, вам нужно указать gcc передать его компоновщику:

gcc -Wl,-rpath-link,/directory-that-libshared_dependent-is-in
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...