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

 
 
 
Reply to this topicStart new topic
> Microblaze, FreeRTOS, C & C++, Не могу подружить C и C++ в одном проекте
Vadim_nsk
сообщение Mar 23 2015, 08:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-09-05
Из: г. Новосибирск
Пользователь №: 8 335



В Xilinx Software Development Kit 13.4 создаю проект FreeRTOS_Hello_World для Microblaze. Проверяю, все работает. Добавляю файл *.cpp с функцией и она становится невидна. Переименовываю файл в *.c. И функция становится видимой. Вынес новые файлы в отдельный каталог, чтобы отдельно изменить параметры компиляции, но что бы я не менял, все равно не работает. Компилятор GCC, язык опередляет по расширению файла, а вот линковщик не хочет собирать все воедино.
Пример проекта
Go to the top of the page
 
+Quote Post
den_po
сообщение Mar 23 2015, 09:14
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 139
Регистрация: 9-11-12
Из: Санкт-Петербург
Пользователь №: 74 315



Цитата(Vadim_nsk @ Mar 23 2015, 12:53) *
а вот линковщик не хочет собирать все воедино.

А ему есть, что собирать? Для cpp объектник генерируется?
Go to the top of the page
 
+Quote Post
Vadim_nsk
сообщение Mar 23 2015, 10:28
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 7-09-05
Из: г. Новосибирск
Пользователь №: 8 335



Цитата(den_po @ Mar 23 2015, 15:14) *
А ему есть, что собирать? Для cpp объектник генерируется?

Верно, объектника нет, но почему нет, не понимаю. Вот вывод в консоль:
Код
**** Build of configuration Debug for project freertos_hello_world_0 ****

make all
Building file: ../src/FreeRTOS-main.c
Invoking: MicroBlaze gcc compiler
mb-gcc -Wall -O0 -g3 -c -fmessage-length=0 -I../../freertos_hello_world_bsp_0/microblaze_0/include -mxl-barrel-shift -mxl-pattern-compare -mcpu=v8.20.b -mno-xl-soft-mul -MMD -MP -MF"src/FreeRTOS-main.d" -MT"src/FreeRTOS-main.d" -o"src/FreeRTOS-main.o" "../src/FreeRTOS-main.c"
Finished building: ../src/FreeRTOS-main.c
' '
Building file: ../src/task_c.c
Invoking: MicroBlaze gcc compiler
mb-gcc -Wall -O0 -g3 -c -fmessage-length=0 -I../../freertos_hello_world_bsp_0/microblaze_0/include -mxl-barrel-shift -mxl-pattern-compare -mcpu=v8.20.b -mno-xl-soft-mul -MMD -MP -MF"src/task_c.d" -MT"src/task_c.d" -o"src/task_c.o" "../src/task_c.c"
Finished building: ../src/task_c.c
' '
Building target: freertos_hello_world_0.elf
Invoking: MicroBlaze gcc linker
mb-gcc -Wl,-T -Wl,../src/lscript.ld -L../../freertos_hello_world_bsp_0/microblaze_0/lib -mxl-barrel-shift -mxl-pattern-compare -mcpu=v8.20.b -mno-xl-soft-mul -o"freertos_hello_world_0.elf"  ./src/FreeRTOS-main.o ./src/task_c.o   -Wl,--start-group,-lxil,-lfreertos,-lgcc,-lc,--end-group
./src/FreeRTOS-main.o: In function `main':
D:\My_Documents\projects\Atlys_Demo\SDK\SDK_Workspace\freertos_hello_world_0\Debug/../src/FreeRTOS-main.c:196: undefined reference to `task_cpp'
collect2: ld returned 1 exit status
make: *** [freertos_hello_world_0.elf] Ошибка 1
Т.е. он даже не пытается его компилировать.

Нашел для файла cpp настройку Select tool, в которой можно выбрать: Microblaze g++ compiler, а по умолчанию там -- NO TOOL --. Почему так не знаю, но похоже, придется указывать чем собирать каждый новый cpp файл.
Проблема решена, спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 02:23
Рейтинг@Mail.ru


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