Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обновил YAGARTO - получил undefined reference to `__dso_handle'
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > GNU/OpenSource средства разработки
Stran-nik
Нид хелп!

Установил я сегодня свежую YAGARTO с yagarto.de - теперь при линковке любого C++ проекта (пробовал и примеры от Martin Thomas) получаю:
In function `__static_initialization_and_destruction_0': ................ undefined reference to `__dso_handle'
Со старой версией все линковалось нормально.
Куда копать?
Гугл сегодня целый день копаю - пока результатов нет.

P.S: линкую с помощью arm-elf-g++
Сергей Борщ
Цитата(Stran-nik @ Jul 3 2008, 17:18) *
In function `__static_initialization_and_destruction_0': ................ undefined reference to `__dso_handle'
Получал похожее. Если разрешить этот __dso_handle, то arm-gcc прилинковывает в этом случае чуть ли не всю библиотеку (во всяком случае видел там и все функции работы с файлами и множество других). Размер прошивки получается мегабайты. Выяснил, что к такому поведению приводит объявление статически размещенного объекта, у которого прописан явный деструктор. Но это было с довольно старой версией, так что может и не ваш случай.
Stran-nik
Цитата(Сергей Борщ @ Jul 3 2008, 21:08) *
Выяснил, что к такому поведению приводит объявление статически размещенного объекта, у которого прописан явный деструктор. Но это было с довольно старой версией, так что может и не ваш случай.


Да.. спрятал явные деструкторы глобальных статических объектов (в общем то они и не нужны) - все скомпилилось.
Спасиб за наводку. a14.gif
alx2
Цитата(Stran-nik @ Jul 4 2008, 14:21) *
Да.. спрятал явные деструкторы глобальных статических объектов (в общем то они и не нужны) - все скомпилилось.
Я просто дал ему этот __dso_handle чтобы линкер мегабайты библиотек не тянул:

void * __dso_handle = 0;
Сергей Борщ
Цитата(alx2 @ Jul 4 2008, 12:34) *
Я просто дал ему этот __dso_handle чтобы линкер мегабайты библиотек не тянул:

void * __dso_handle = 0;
Я пробовал что-то подобное: LDFLAGS += -Wl,--defsym,__dso_handle=0 и получил описанный выше результат. Повторил эксперимент с void * __dso_handle = 0; - то же яйцо, только в профиль. С деструктором размер хекса 13992, без него - 3960. arm-elf-gcc 4.2.2 из Yagarto 200804008
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.