создание общей библиотеки с использованием другой библиотеки в Linux - PullRequest
0 голосов
/ 21 марта 2009

У меня есть общая библиотека, которая говорит "libeval.so". Я использую это в своем проекте для создания более общей библиотеки с именем say "lidpi.so". Библиотека с именем "libdpi.so" используется инструментом. Теперь этот инструмент не может видеть другую библиотеку, кроме "libdpi.so". Я использую несколько вызовов функций, которые присутствуют в "libeval.so", и они не присутствуют в "libdpi.so". Есть ли в gcc какой-то переключатель или что-то, чтобы это преодолеть.

1 Ответ

3 голосов
/ 21 марта 2009

Если libdpi.so спроектирован так, что он может открывать libeval.so, то ваша программа должна знать только о libdpi.so.

В частности, libdpi.so должен иметь некоторую функцию, которая вызывает dlopen, вероятно, так:

dlopen("path/to/libdpi.so", RTLD_LAZY);

Тогда другие функции в libdpi.so могут взаимодействовать с libeval.so.

Редактировать : Чтобы создать общую библиотеку, используйте эту команду:

gcc -shared -o libdpi.so [list of object files to go in libdpi.so]

Примечание. При создании объектов используйте аргумент команды -fPIC с gcc, например:

gcc -fPIC -o foo.o foo.c
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...