Я создал общую библиотеку (* .so) с использованием файлов объектных кодов * .o (исходный код C) с использованием компилятора RVDS на Windows Host.Как экспортировать символы из общей библиотеки
связать этот общий объект с приложением (с помощью GCC для целевой руки на Linux хост) и получить исполняемый файл, который на работающем генерирует ошибку сегментации. (Я знаю, что я должен отлаживать его!)
Вместо создавая общую библиотеку, если я создаю статическую библиотеку с одинаковыми исходными файлами, а затем связываюсь с приложением, а затем выполняю приложение, оно работает нормально, как ожидалось.
Так что мои вопросы: -
Мне нужно экспортировать символы (функции, экспортируемые в приложении) или любые другие символы, явно, в моем исходном файле, используя некоторые конструкции, так что он хорошо работает, когда связаны ли с приложением? Что нужно и как я это делаю?
Как будет работать общая библиотека ?, то есть будут ли адреса, где будут загружаться и выполняться функции, будут предоставлены в библиотеке при создании библиотеки. Как приложение (main()) разрешает адреса, где выполняются функции библиотеки?
Как работает статическая библиотека, то есть как эта спецификация адреса и разрешение происходит в случае статической библиотеки?
Thank you.
@Jonathan: Я не загружаю общую библиотеку, используя вызовы dlopen(). – goldenmean
ОК - У меня нет идей. Я больше знаком с Unix/Linux; Возможно, я помогу. –