Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> static library как простой набор объектных файлов 
V
    Опции темы
georain
Дата 15.12.2010, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 28.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Имеется набор .cpp файлов с которыми нужно собирать несколько библиотек. Естественное решение сделать из них static library и подключать её. Проблема в том, что никак не могу добиться чтобы было обычное поведение, как у набора .cpp файлов.

Например чтобы работал rtti нужно добавлять __attribute__ ((visibility("default")) к классам, а мне бы не хотелось как либо менять код вообще, то есть чтобы код оставался таким, каким он был бы, если бы я собирал с .cpp напрямую.

Ещё проблема с объектами-регистраторами (выполняют код в конструкторе на этапе инициализации библиотеки). При различных режимах линковки, либо вообще не экспортируются и не выполняются, либо конструктор выполняется больше одного раза, этого я вообще понять не могу почему (это когда с --whole-archive).

(+ не могу понять влияние слова static перед определением объекта-регистратора)

gcc 4.4.4
PM MAIL   Вверх
MAKCim
Дата 16.12.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



по идее проблем быть не должно
архив статический - это просто контейнер


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
xvr
Дата 16.12.2010, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 20
Всего: 223



Ответ уже прозвучал в вопросе: --whole-archive
По поводу 
Цитата

конструктор выполняется больше одного раза
 - совершенно непонятно, вроде не должно такого быть

Еще есть одно но - вот выдержка из info на ld (на опцию --whole-archive):
Цитата

     Two notes when using this option from gcc: First, gcc doesn't know
     about this option, so you have to use `-Wl,-whole-archive'.
     Second, don't forget to use `-Wl,-no-whole-archive' after your
     list of archives, because gcc will add its own list of archives to
     your link and you may not want this flag to affect those as well.

Цитата(georain @  15.12.2010,  19:08 Найти цитируемый пост)
(+ не могу понять влияние слова static перед определением объекта-регистратора)
Это что бы к этому объекту случайно что нибудь не прилинковалось снаружи  smile 


PM MAIL   Вверх
georain
Дата 16.12.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 28.11.2006
Где: Санкт-Петербург

Репутация: нет
Всего: нет



Все заработало как надо после добавления ко всем проектам
Код

-fvisibility=hidden
-fvisibility-inlines-hidden

и линковкой статических библиотек с --whole-archive
Код

-Wl,--whole-archive -lLibA -lLibB -Wl,--no-whole-archive


Спасибо! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0663 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.