реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> arm-gcc cin/cout
dimka76
сообщение Dec 2 2010, 08:29
Сообщение #1


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Подскажите как использовать cin/cout в ARM-GCC.

Линкер выдает такие ошибки
Код
In function `operator<< <std::char_traits<char> >':
c:\program files\codesourcery\sourcery g++ lite\bin\../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/include/c++/4.5.1/ostream:513: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
obj/main.o: In function `std::ostream::operator<<(std::ostream& (*)(std::ostream&))':
c:\program files\codesourcery\sourcery g++ lite\bin\../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/include/c++/4.5.1/ostream:113: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
obj/main.o: In function `main':
D:\Dmitry\Project\ARM7\GCC\LPC11xx_Cpp_Proba\STM32_Proba_CPP/main.cpp:78: undefined reference to `std::cout'
obj/main.o: In function `__static_initialization_and_destruction_0':
c:\program files\codesourcery\sourcery g++ lite\bin\../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/include/c++/4.5.1/iostream:73: undefined reference to `std::ios_base::Init::Init()'
c:\program files\codesourcery\sourcery g++ lite\bin\../lib/gcc/arm-none-eabi/4.5.1/../../../../arm-none-eabi/include/c++/4.5.1/iostream:73: undefined reference to `std::ios_base::Init::~Init()'


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
alx2
сообщение Dec 3 2010, 06:44
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Цитата(dimka76 @ Dec 2 2010, 13:29) *
Подскажите как использовать cin/cout в ARM-GCC.

Код
kolez% cat test.cpp
#include <iostream>
int main()
{
  std::cout << "Hello, World!" << std::endl;
  return 0;
}
kolez% arm-elf-g++ -Wall test.cpp
kolez%

Цитата(dimka76 @ Dec 2 2010, 13:29) *
Линкер выдает такие ошибки

Странно... Эти символы должны быть в libstdc++.a.
Посмотрите в map-файле, может линкер берет не ту libstdc++ (где-то неверные пути)?...


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
dimka76
сообщение Dec 3 2010, 08:23
Сообщение #3


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(alx2 @ Dec 3 2010, 09:44) *
Странно... Эти символы должны быть в libstdc++.a.
Посмотрите в map-файле, может линкер берет не ту libstdc++ (где-то неверные пути)?...


Спасибо. С этим я разобрался. Я изначально линкер вызывал через gcc, а надо было через g++.
Но после исправления появились новые ошибки.
Вот
Код
arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -nostartfiles -Wl,--gc-sections,-Map=b
in/STM32_CPP_PROBA.map,-cref,-u,Reset_Handler  -T link.ld -Wl,--defsym,__dso_han
dle=0  -o bin/STM32_CPP_PROBA.elf obj/startup_stm32f10x_md.o obj/stf_syscalls_mi
nimal.o obj/core_cm3.o obj/USART.o obj/system_stm32f10x.o obj/main.o obj/test.o
c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5
.1/../../../../arm-none-eabi/bin/ld.exe: bin/STM32_CPP_PROBA.elf section `.text'
will not fit in region `rom'
c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5
.1/../../../../arm-none-eabi/bin/ld.exe: region `rom' overflowed by 186372 bytes

c:/program files/codesourcery/sourcery g++ lite/bin/../lib/gcc/arm-none-eabi/4.5
.1/thumb2\libgcc.a(unwind-arm.o): In function `get_eit_entry':
unwind-arm.c:(.text+0x13e): undefined reference to `__exidx_end'
unwind-arm.c:(.text+0x142): undefined reference to `__exidx_start'
unwind-arm.c:(.text+0x146): undefined reference to `__exidx_start'
unwind-arm.c:(.text+0x14a): undefined reference to `__exidx_end'


Вот еще map файлПрикрепленный файл  STM32_CPP_PROBA.map.rar ( 94.68 килобайт ) Кол-во скачиваний: 175


--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 3 2010, 15:11
Сообщение #4


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Не помещается, чего ж непонятногоsmile.gif
Бросьте это гнилое занятие. libstdc++ тянет за собой исключения, а это неимоверно прожорливая штука в масштабах микроконтроллеров.
Напишите свой маленький cout, и будет хорошоsmile.gif

Что касается __exidx_*, то это скрипт линкера не дописан.
Добавьте туда такую секцию:
Код
    __exidx_start = .;
    .ARM.exidx :
    {
        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
    } >FLASH
    __exidx_end = .;



--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
dimka76
сообщение Dec 4 2010, 04:54
Сообщение #5


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(AHTOXA @ Dec 3 2010, 18:11) *
Не помещается, чего ж непонятногоsmile.gif

То что не помещается я понял. Вопрос в том нельзя ли это победить.
Кстати памяти у моего контроллера 64 КБайта.
Цитата(AHTOXA @ Dec 3 2010, 18:11) *
Бросьте это гнилое занятие. libstdc++ тянет за собой исключения, а это неимоверно прожорливая штука в масштабах микроконтроллеров.

Вот теперь понятна причина невлизания.
Цитата(AHTOXA @ Dec 3 2010, 18:11) *
Что касается __exidx_*, то это скрипт линкера не дописан.

Раз уж не влизает, то и смысла править нет :-)



--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.03151 секунд с 7
ELECTRONIX ©2004-2016