Здравствуйте, уважаемые
Думаю продублировать тему здесь, всё таки вопрос по компилятору, хоть и не по GNU...
А то, может, в разделе по АРМам соответствующие спецы редко появляются...
В проекте uVision есть асмовый файл (startup.s) и несколько сишных .cpp.
Потребовалось передать в таблицу векторов в асм адрес функции, определённой в си.
Ну воткнул в асм IMPORT label_name перед указанием метки. Вроде всё правильно.
Все файлы компилируются, но линкер безостановочно ругается на undefined symbol "label_name" 07.gif
Такую-то мать. Весь вечер убил на ковыряние - оказалось, виной всему было расширение файла с функцией - .cpp. Переименование в .c решает проблему (но добавляет другие smile.gif)
Или ещё можно выкрутиться заключением функции в обёртку extern "C" {}...
Но почему линкеру необходимы именно "чистые" си, а не плюсы для поиска внешних меток?
Что за причуда?
И другой вопрос.
Компилирую свой проект с использованием MicroLib, проект простой, имеет всего два небольших класса.
Однако сейчас на этапе линковки стала вылетать такая ошибка:
Код
.\obj\blinky.axf: Error: L6218E: Undefined symbol __cpp_initialize__aeabi_ (referred from anon$$obj.o).
При снятии галочки с Use MicroLib в свойствах проекта - ошибка пропадает, всё собирается нормально.
Никто не сталкивался с подобным? Так ли актуальна эта microlib?
Чёрт, а стандартная либа жрёт на 500 байт больше - это пока. Но зато никаких ограничений

ЗЫ: Вроде разобрался, что это - вызов библиотечного обработчика конструкторов объектов С++.
А у микролиб с этим проблемы - если есть глобальный объект с конструктором, то такая ошибка обеспечена.
ЗЗЫ всех с наступающим Новым годом!
Счастья вам, здоровья, успехов и удачи!