LINUX.ORG.RU

архив библиотек


0

0

У меня ещё и тако вопрос. Написал библиотеку для архитектуры Coldfire(m68k).Состоит из 7 файлов. В одном из них есть функция "ExternalServer_RunMain".Это основная функция в данной библотеке.Она и делает основную работу.Внутри неё используются остальные фунцкии этой библиотеки.То,что я делаю-компилирую с опцией -с все файлы.А потом,когда образовались файлы: *.о, я их с помощью "ar" засовываю в архив библиотек.(я не делаю линковку.Для линковки нужна внешняя библиотека).Потом я запускаю основную функцию.И то,что должно происходить-не происходит.Я даже для внёс различные разпечатки из основной функции и нечего не разпечатывается.Кто-нить знает почему,в чём может быть проблема? Может всё-таки нужно было линковать?

Заранее спасибо.


ну насколько я знаю архив не приспособлен для запуска. он может использоваться только при линковке.

У меня другая проблема - есть архив libA.a, который экспортирует символы. Я линкую его при сборке libB.so, и libB не содержит экспортируемых из libA символов. Как заставить его экспортировать?

k0l0b0k ★★
()
Ответ на: комментарий от k0l0b0k

Если имена (и соответственно модули) из архива не вызываются,
то на кой хрен их добавлять в so?
Можно попробовать опцию --whole-archive

io ★★
()
Ответ на: комментарий от k0l0b0k

>Как заставить его экспортировать?

#include "libA.h"

dimon555 ★★★★★
()
Ответ на: комментарий от k0l0b0k

> У меня другая проблема - есть архив libA.a, который экспортирует символы. Я линкую его при сборке libB.so, и libB не содержит экспортируемых из libA символов. Как заставить его экспортировать?

Самая первое решение, которое приходит на ум - это сделать libA.so. А вообще, каким инструментарием ты пользуешься для сборки? Autotools?

badgopher
()
Ответ на: комментарий от badgopher

еще один .so не катит (в разработке NPAPI плагин)

qmake.

k0l0b0k ★★
()
Ответ на: комментарий от k0l0b0k

>ну насколько я знаю архив не приспособлен для запуска. он может использоваться только при линковке.

Да я его не запускаю, а пытаюсь пользоваться функциями из архива. В том проблема,что эти функции не вызываются.

Структура такова:

Главный проект:

А. Либ

А.1 llclibapi.а

Б. Инклуд

Б.1 llclibapi.h

1. Подпроект 1

2. Подпроект 2

3. Подпроект 3

...

Х. Подпроект х

Х+1. Подпроект-мой

Х+1.1. ExternalServer(содержит функцию ExternalServer_RunMain)

Х+1.2. Подпроект-мой 2

Х+1.3. Подпроект-мой 3

...

Х+1.7. Подпроект-мой 7

Собираю "Подпроект-мой" в libext.а Добавив код в главный проект, запускаю ExternalServer_RunMain.

"Подпроект-мой" 2-7 включают в себя функции,которым нужна библиотека: llclibapi.а

Когда я компилирую "Подпроект-мой", я не линкую его с библиотекой: llclibapi.а

rapa
() автор топика
Ответ на: комментарий от k0l0b0k

>Я линкую его при сборке libB.so

A: подключаются только те объектные файлы из архива, в которых содержатся нужные символы.

Еще советую запомнить на всю жизнь, что код для *.so и *.a должен собираться с разными флагами (-fPIC, если быть точным).

linuxfan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.