Jump to content

    

Вопросы по Eclipse, CDT, Zylin embedded CDT

В обоих случаях выдаёт ошибку

 

15:31:53 **** Incremental Build of configuration Debug for project jk87 ****

make all

Building file: ../oo.c

/bin/sh: arm-none-linux-gnueabi-gcc: команда не найдена

Invoking: ARM Linux GCC C Compiler (Sourcery Lite Linux)

arm-none-linux-gnueabi-gcc -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="oo.o.lst" -c -fmessage-length=0 -MMD -MP -MF"oo.d" -MT"oo.d" -mcpu=arm926ej-s -mthumb -g3 -o "oo.o" "../oo.c"

make: *** [oo.o] Ошибка 127

15:31:53 Build Finished (took 183ms)

Под какой ОС Вы работаете?

Для debian необходимо dash (по умолчанию) сменить на bash.

Когда Вы собираете из консоли, у Вас дополнительно никакие переменные окружения не устанавливаются?

Share this post


Link to post
Share on other sites

Ось убунту 12.04.

ls -la /bin/sh

lrwxrwxrwx 1 root root 9 нояб. 1 15:48 /bin/sh -> /bin/bash так что bash установлен.

 

В командной оболочке собираю так:

$ arm-none-linux-gnueabi-gcc -static main.c

$ls -l a.out

-rwxrwxr-x 1 zavod zavod 653950 нояб. 1 15:51 a.out

$ file a.out

a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, not stripped

 

Share this post


Link to post
Share on other sites
В командной оболочке собираю так:

$ arm-none-linux-gnueabi-gcc -static main.c

$ls -l a.out

-rwxrwxr-x 1 zavod zavod 653950 нояб. 1 15:51 a.out

$ file a.out

a.out: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, for GNU/Linux 2.6.16, not stripped

А где вызов make? Попробуйте собирать проект с помощью make в консоле. И хорошо бы сам Makefile показать.

Share this post


Link to post
Share on other sites

Так makefile же создаётся автоматически?

 

#######################################################################
#########
# Automatically-generated file. Do not edit!
################################################################################

-include ../makefile.init

RM := rm -rf

# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include objects.mk

ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(C_DEPS)),)
-include $(C_DEPS)
endif
ifneq ($(strip $(ASM_DEPS)),)
-include $(ASM_DEPS)
endif
ifneq ($(strip $(S_UPPER_DEPS)),)
-include $(S_UPPER_DEPS)
endif
endif

-include ../makefile.defs

# Add inputs and outputs from these tool invocations to the build variables 
SECONDARY_FLASH += \
jk87.hex \

SECONDARY_LIST += \
jk87.lst \

SECONDARY_SIZE += \
jk87.siz \


# All Target
all: jk87.elf secondary-outputs

# Tool invocations
jk87.elf: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: ARM Linux GCC C Linker (Sourcery Lite Linux)'
arm-none-linux-gnueabi-gcc -Xlinker --gc-sections -Wl,-Map,"jk87.map" -static -mcpu=arm926ej-s -mthumb -g3 -o "jk87.elf" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '

jk87.hex: jk87.elf
@echo 'Invoking: ARM Linux GNU Create Flash Image (Sourcery Lite Linux)'
arm-none-linux-gnueabi-objcopy -O ihex "jk87.elf"  "jk87.hex"
@echo 'Finished building: $@'
@echo ' '

jk87.lst: jk87.elf
@echo 'Invoking: ARM Linux GNU Create Listing (Sourcery Lite Linux)'
arm-none-linux-gnueabi-objdump -h -S "jk87.elf" > "jk87.lst"
@echo 'Finished building: $@'
@echo ' '

jk87.siz: jk87.elf
@echo 'Invoking: ARM Linux GNU Print Size (Sourcery Lite Linux)'
arm-none-linux-gnueabi-size  --format=berkeley "jk87.elf"
@echo 'Finished building: $@'
@echo ' '

# Other Targets
clean:
-$(RM) $(SECONDARY_SIZE)$(OBJS)$(C_DEPS)$(ASM_DEPS)$(SECONDARY_FLASH)$(EXECUTABLES)$(SECONDARY_LIST)$(S_UPPER_DEPS) jk87.elf
-@echo ' '

secondary-outputs: $(SECONDARY_FLASH) $(SECONDARY_LIST) $(SECONDARY_SIZE)

.PHONY: all clean dependents
.SECONDARY:

-include ../makefile.targets

Edited by IgorKossak
[codebox] для длинного кода, [code] - для короткого!!!

Share this post


Link to post
Share on other sites
Так makefile же создаётся автоматически?

Понятно, я только для нативного компилятора из оболочки настройки делаю.

 

И кто мешает make all выполнить в консоле?

 

Share this post


Link to post
Share on other sites

Действительно, странно, но make all в консоли всё собрал нормально, правда сегодня уже не успею проверить работоспособность на самом контроллере.

zavod@zavod-System-Product-Name:~/workspace/jk87/Debug$ make all
Building file: ../oo.c
Invoking: ARM Linux GCC C Compiler (Sourcery Lite Linux)
arm-none-linux-gnueabi-gcc -O0 -ffunction-sections -fdata-sections -Wall -Wa,-adhlns="oo.o.lst" -c -fmessage-length=0 -MMD -MP
-MF"oo.d" -MT"oo.d" -mcpu=arm926ej-s -mthumb -g3 -o "oo.o" "../oo.c"
Finished building: ../oo.c

Building target: jk87.elf
Invoking: ARM Linux GCC C Linker (Sourcery Lite Linux)
arm-none-linux-gnueabi-gcc -Xlinker --gc-sections -Wl,-Map,"jk87.map" -static -mcpu=arm926ej-s -mthumb -g3 -o "jk87.elf"  ./oo.o   
Finished building target: jk87.elf

Invoking: ARM Linux GNU Create Flash Image (Sourcery Lite Linux)
arm-none-linux-gnueabi-objcopy -O ihex "jk87.elf"  "jk87.hex"
Finished building: jk87.hex

Invoking: ARM Linux GNU Create Listing (Sourcery Lite Linux)
arm-none-linux-gnueabi-objdump -h -S "jk87.elf" > "jk87.lst"
Finished building: jk87.lst

Invoking: ARM Linux GNU Print Size (Sourcery Lite Linux)
arm-none-linux-gnueabi-size  --format=berkeley "jk87.elf"
  text	   data	    bss	    dec	    hex	filename
498800	   3180	   5068	 507048	  7bca8	jk87.elf
Finished building: jk87.siz

Share this post


Link to post
Share on other sites

Извиняюсь, если такой вопрос уже был .

Есть разлапистый проект на основе STM32 Periferial Lib - куча папок, структуру которых рушить бы не

хотелось. Как сделать, чтобы под Eclipse все файлы исходников видели нужные им .h файлы,

независимо от их взаимного расположения в папках проекта. Прописывание в .include всех папок

с .h файлами не помогает ...

 

Share this post


Link to post
Share on other sites

Если библиотека лежит не в папке проекта, то можно ее корневую папку добавить в структуру проекта как linked folder (File->new->folder->advanced). Если там требуется указать относительный путь, то его надо указывать в виде ${PARENT-2-PROJECT_LOC}/common для папки ../../common

 

И неплохо бы настроить автоматическое распознавание путей и предопределенных символов компилятора.

 

Или я неправильно понял фразу "чтобы под Eclipse все файлы исходников видели нужные им .h файлы"? У вас проект не собирается или не работает навигация по исходникам?

 

 

 

==========================================================================

Новый вопрос.

 

Кеплер, при настройке C/C++ General->Preprocessor include paths, macros etc->Providers->CDT GCC Builtin compiler settings (которое замена Discovery в предыдущих версиях) в каждом проекте создается папка .settings, в которую помещается файл language.settings.xml с настройками этого Provider. Логично было бы включать этот файл в репозиторий системы контроля версий, чтобы не создавать его заново при вытаскивании проекта на новой машине. Но в этом файле есть фрагмент

env-hash="тут какое-то число"

в котором "какое-то число" на каждой машине прописывается свое при открытии проекта. То есть получается, что если я работаю с одним проектом на двух машинах, то при переходе с машины на машину этот файл меняется и система контроля версий совершенно законно хочет это изменение сохранить в репозитории. Не включать файл в репозиторий тоже плохо - тогда придется при каждом доставании из репозитория настраивать CDT GCC Builtin compiler settings вручную заново. Ладно если в workspace один-два проекта, а если их несколько десятков?

 

В общем вопрос: кто как с этим борется?

 

Вообще последние версии вызывают недоумение - сначала в корне workspace появилась неизвестно для чего нужная папка RemoteSystemsTempFiles. Вот кто мешал засунуть ее в .metadata? Теперь эта .settings, при наличии двух файлов .project и .cproject - что мешало дописывать в них?

Share this post


Link to post
Share on other sites
Вообще последние версии вызывают недоумение - сначала в корне workspace появилась неизвестно для чего нужная папка RemoteSystemsTempFiles. Вот кто мешал засунуть ее в .metadata? Теперь эта .settings, при наличии двух файлов .project и .cproject - что мешало дописывать в них?

Здесь кое-что на эту тему. Меня пока не приперло с этим разбираться (могу терпеть, в отличие от Discovery).

 

Share this post


Link to post
Share on other sites
Здесь кое-что на эту тему.
Спасибо, RemoteSystemsTempFiles убрал отключив RSE UI в Window -> Preferences -> General -> Startup and Shutdown

 

Добавлено: Ан нет, надо еще Window -> Preferences -> Remote systems убрать галочку "Re-open Remote systems view to previous state"

Share this post


Link to post
Share on other sites

У меня вопрос: как в CooCox посмотреть откуда программа попала в default handler, стек как таковой там не показывается, т.е. в окне debug отображается только где процессор находится на данный момент, а предыдущие адреса неотображаются.

Share this post


Link to post
Share on other sites

Подскажите, как мне запустить из сабжа компиляцию проекта на удаленной станции, чтобы make на ней же. Пока пользуюсь другими терминалами.

Вкратце, завожу ssh, делал проект с локальной копией - не понравилось :) синхронизация там всякая - хочу чтобы на кнопку save - сохранялось по сетке. RaspberryPI :) если кому интересно

 

 

Share this post


Link to post
Share on other sites

Eclipse + OpenOCD + ST-LINK V2.

Почему-то содержимое PC становится нечетным после первого шага выполнения программы.

В Atollic, которому подсунут тот же elf, PC остается четный.

Программа выполняется как положено, подозрение, что отображение неправильное.

Поиском не нашел объяснения этой странности.

 

И еще вопрос, который сформулировал Сергей Борщ когда-то

"Попутный вопрос - можно ли его заставить в этом окне показывать команды по порядку адресов - мне он часто показывает команды с пропусками или в причудливо перемешанном порядке."

Пропуски наблюдаю регулярно. Благодаря *.lss слепым не остаюсь, но неудобно чуток :-) Есть решение?

post-8165-1394184489_thumb.png

Share this post


Link to post
Share on other sites

Насколько помнится, младший бит в счетчике команд указывает на режим THUMB, т.е. должен быть в единице. Видимо Atollic просто маскирует его чтобы не смущать.

 

По пропускам: надо "отжать" иконку Show source. Видимо он не может однозначно оперделить принадлежность некоторых команд к строкам исходника.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now