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

 
 
 
Reply to this topicStart new topic
> Сборка проекта stm через cmake
zemlemer
сообщение Apr 16 2013, 13:22
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 10-06-08
Пользователь №: 38 190



Добрый день. Есть проект, который собирается и работает из под eclips-а. Так как смог осилить заливку через dfu-util, хотелось бы попытаться избавиться от eclipse и перевести разработку на cmake. Написал файл тулчейна, и проекта. При сборке cmake по команде cmake -DCMAKE_TOOLCHAIN_FILE=~/Projects/Sampler/stm32.cmake -G "Unix Makefiles" говорит:
Код
-- The C compiler identification is GNU 4.5.2
-- The CXX compiler identification is GNU 4.5.2
-- Check for working C compiler: /opt/codesourcery/arm-2011.03/bin/arm-none-eabi-gcc
-- Check for working C compiler: /opt/codesourcery/arm-2011.03/bin/arm-none-eabi-gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /opt/codesourcery/arm-2011.03/bin/arm-none-eabi-g++
-- Check for working CXX compiler: /opt/codesourcery/arm-2011.03/bin/arm-none-eabi-g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- The ASM compiler identification is GNU
-- Found assembler: /opt/codesourcery/arm-2011.03/bin/arm-none-eabi-as
-- Configuring done
-- Generating done
-- Build files have been written to: /home/xxxx/Projects/Sampler


Далее по команде make идет идет компиляция всех исходников, кроме, почему-то ассемблерного файла с векторами, хотя он в целях указан. Далее следует ошибка линкера:
Код
/opt/codesourcery/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld: cannot open linker script file -nostartfiles: No such file or directory
collect2: ld returned 1 exit status
make[2]: *** [Sampler.elf] Error 1
make[1]: *** [CMakeFiles/Sampler.elf.dir/all] Error 2
make: *** [all] Error 2


Отсюда 3 вопроса:
1. Как заставить cmake брать arm-none-eabi-ld вместо ld из другой директории (хотя, судя по всему, файлы одинаковые).
2. Почему не хочет браться ассмеблерный файл с векторами?
3. Как его попытаться уговорить собраться?
Прикрепленные файлы
Прикрепленный файл  Sampler.zip ( 132.86 килобайт ) Кол-во скачиваний: 13
 
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 16 2013, 14:05
Сообщение #2


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(zemlemer @ Apr 16 2013, 17:22) *
[code]/opt/codesourcery/arm-2011.03/bin/../lib/gcc/arm-none-eabi/4.5.2/../../../../arm-none-eabi/bin/ld: cannot open linker script file -nostartfiles: No such file or directory

Судя по сообщению не правильно сгенерированы опции для линкера.
К сожалению Вы не приложили сгенерированный makefile. Попробуйте запустить make c опцией -n и посмотрите вывод на предмет правильности ключей для компилятора, линкера и ассемблера. Ассемблировать можно и с помощью gcc (g++), задав необходимые ключи.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
zemlemer
сообщение Apr 16 2013, 14:48
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 10-06-08
Пользователь №: 38 190



Цитата(mdmitry @ Apr 16 2013, 18:05) *
Судя по сообщению не правильно сгенерированы опции для линкера.
К сожалению Вы не приложили сгенерированный makefile. Попробуйте запустить make c опцией -n и посмотрите вывод на предмет правильности ключей для компилятора, линкера и ассемблера. Ассемблировать можно и с помощью gcc (g++), задав необходимые ключи.


Опции для линкера прописаны в файле тулчейна и проекта. Утилита cmake генерит множество неудобочитаемых make файлов.
wПри проходе make -n вызывается странное: /usr/bin/cmake -E cmake_link_script CMakeFiles/Sampler.elf.dir/link.txt --verbose= содержимое которого вызов gcc с ключами компиляции линекра и перечислением всех сгенерированных объектников, кроме ассемблерного файла с векторами. К сожалению, вопрос остается открытым. Спасибо.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 16 2013, 15:11
Сообщение #4


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(zemlemer @ Apr 16 2013, 18:48) *
Опции для линкера прописаны в файле тулчейна и проекта. Утилита cmake генерит множество неудобочитаемых make файлов.
wПри проходе make -n вызывается странное: /usr/bin/cmake -E cmake_link_script CMakeFiles/Sampler.elf.dir/link.txt --verbose= содержимое которого вызов gcc с ключами компиляции линекра и перечислением всех сгенерированных объектников, кроме ассемблерного файла с векторами. К сожалению, вопрос остается открытым. Спасибо.

make файлы автоматически сгенерированные понять можно, в них обычно нет неявных правил с шаблонами.
насколько я помню, cmake генерирует файл для запуска make, а в него включены сгенерированные файлы.
А ключи линкера правильные?

На форуме есть пользователь с ником SyncLair, он использует cmake и имеет разработку для ARM (ссылка). Гляньте, может пригодится его конфигурация.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Apr 16 2013, 15:15
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(zemlemer @ Apr 16 2013, 17:22) *
Добрый день. Есть проект, который собирается и работает из под eclips-а. Так как смог осилить заливку через dfu-util, хотелось бы попытаться избавиться от eclipse и перевести разработку на cmake.

Отсюда 3 вопроса:
1. Как заставить cmake брать arm-none-eabi-ld вместо ld из другой директории (хотя, судя по всему, файлы одинаковые).
2. Почему не хочет браться ассмеблерный файл с векторами?
3. Как его попытаться уговорить собраться?


1. Судя по всему у вас проблемы с ld-файлом (попробуйте другой)

2. Чтобы собирался ассмеблерный файл с векторами нужно чтобы в проекте был включён язык Ассемблера или для библиотеки входящей в проект включён язык ассемблера и расширение у него должно быть то ли *.s то ли *.S


занимаюсь сборкой проекта для NXP c CMAKE-ом -- веду свой проекта на sourceforge.com

пробывал также создать поддержку АVR и STM -- вроде работает -- давайте спишемся по почте пока ваш проект нет времени посмотреть

Для STM получаются сложные CMAKE -файлы тем не менее у меня получалось собирать проект
с исполтзованием кода от STM


--------------------
Go to the top of the page
 
+Quote Post
zemlemer
сообщение Apr 16 2013, 16:40
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 69
Регистрация: 10-06-08
Пользователь №: 38 190



Цитата(SyncLair @ Apr 16 2013, 19:15) *
1. Судя по всему у вас проблемы с ld-файлом (попробуйте другой)

2. Чтобы собирался ассмеблерный файл с векторами нужно чтобы в проекте был включён язык Ассемблера или для библиотеки входящей в проект включён язык ассемблера и расширение у него должно быть то ли *.s то ли *.S


занимаюсь сборкой проекта для NXP c CMAKE-ом -- веду свой проекта на sourceforge.com

пробывал также создать поддержку АVR и STM -- вроде работает -- давайте спишемся по почте пока ваш проект нет времени посмотреть

Для STM получаются сложные CMAKE -файлы тем не менее у меня получалось собирать проект
с исполтзованием кода от STM


Я пытался переключить линекер директивой SET(CMAKE_C_LINK_EXECUTABLE ${TOOLCHAIN_BIN_DIR}/arm-none-eabi-ld CACHE INTERNAL "").
Полный развал cmake: перестает находить компилятор. А со строчкой SET(CMAKE_LINKER ${TOOLCHAIN_BIN_DIR}/arm-none-eabi-ld CACHE INTERNAL "") - ситуация не изменяется.

Сообщение отредактировал zemlemer - Apr 16 2013, 16:43
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:18
Рейтинг@Mail.ru


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