|
Проблема с GCC, Вчера всё было нормально... |
|
|
|
May 27 2011, 07:26
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата Start linking file: Obj/902_430_135.o. C:\mspgcc\bin\msp430-gcc ./Obj/902_430_135.o ./Obj/ads1241_902.o ./Obj/temperatu re.o -mmcu=msp430x149 -Wl,--section-start -Wl,.seg_a=0x1080 -Wl,--gc-sections -W l,-Map=902U.map,--cref -LC:\mspgcc"\bin\lib" -LC:\mspgcc"\msp430\lib" -LC:\mspgc c"\msp430\include" -LC:\mspgcc"\msp430\include\msp430" -lc -lm -o 902U.elf /usr/bin/sh: C:mspgccbinmsp430-gcc: command not found make: *** [902U.elf] Error 127 ??? Жирным выделил особо непонятный момент. Навскидку никто тип грабель не подскажет? Вот сборочный участок makefile: Код # Компиляция: создать объектные файлы из исходников Си. $(OBJDIR)/%.o: %.c @echo Start compile file: $< @$(CC) -c $(CFLAGS) $< -o $@ @echo Compile file: $< - OK.
# Linking. $(NAME).elf : $(OBJ) makefile @echo Start linking file: $<. $(CC) $(OBJ) $(LDFLAGS) -o $@ @echo Linking file: $< - OK. # #$(NAME).elf : $(CSRC) # @echo $^ # @$(CC) -c $(CFLAGS) -combine -fwhole-program $^ $(LDFLAGS) -o $(NAME).o # $(CC) $(NAME).o $(LDFLAGS) -o $@
$(NAME).a43 : $(NAME).elf @$(OBJCOPY) -O ihex $< $@
# Main listing. $(NAME).lst : $(NAME).elf @echo Start create listing file from: $<. $(OBJDUMP) -dStl $< > $@ @echo Create listing file from: $< - OK. Хотя сомневаюсь, что в нем дело. Точнее, уверен, что не в нем. Есть предположение, что свежеустановленный цыгвин запускает свой make.exe вместо нужного. Только вот почему ж он такой кривой... ## Не подтвердилось, с другим то же самое. Цитата >mingw32-make all Start linking file: Obj/902_430_135.o. C:\mspgcc3\bin\msp430-gcc ./Obj/902_430_135.o ./Obj/ads1241_902.o ./Obj/temperat ure.o -mmcu=msp430x149 -Wl,--section-start -Wl,.seg_a=0x1080 -Wl,--gc-sections - Wl,-Map=902U.map,--cref -LC:\mspgcc3"\bin\lib" -LC:\mspgcc3"\msp430\lib" -LC:\ms pgcc3"\msp430\include" -LC:\mspgcc3"\msp430\include\msp430" -lc -lm -o 902U.elf /usr/bin/sh: C:mspgcc3binmsp430-gcc: command not found mingw32-make: *** [902U.elf] Error 127 ## Внезапное развитие событий. Залочил цыгвин (переобозвал папку на cygwin_) - всё заработало. Ну и каким образом он мешается? И почему вчера (до перезагрузки) всё работало? Насколько понимаю, он свой sh подставляет вместо системного шелла. Как - в упор не понимаю. Да, так и есть. Переобозвал sh.exe в sh_ - всё по-старому, нормально работает. Каким образом sh включается вместо обычного shell - без понятия.
Сообщение отредактировал MrYuran - May 27 2011, 06:33
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 27 2011, 08:26
|

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

|
Всё дело в обратных слешах: Цитата C:\mspgcc\bin\msp430-gcc sh их не любит. Причём разные sh не любят в большей либо меньшей степени, но не любят все до единого. make, если находит sh в пути, то вызывает его для выполнения команд. Вернее - может вызывать. А если не находит, то запускает команду сам. Я раньше из-за этого всегда удалял sh из пути. А теперь проникся его (sh) вкусностями, и переделал все makefile под него. В частности, полностью исключил использование обратных слешей. Было ещё несколько тонких моментов, но в конце-концов всё устаканилось
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 27 2011, 08:33
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(AHTOXA @ May 27 2011, 12:30)  Его make вызывает, при чём тут досовский шелл? Так, секундочку... С чего бы вдруг? Да и раньше, без цыгвина, sh нигде не было, а всё работало. Что-то не то...
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 27 2011, 08:36
|

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

|
Цитата(MrYuran @ May 27 2011, 14:33)  Так, секундочку... С чего бы вдруг? Так он устроен  Цитата(MrYuran @ May 27 2011, 14:33)  Да и раньше, без цыгвина, sh нигде не было, а всё работало. Ещё раз: Если make находит sh, то может использовать его. Если не находит - обходится без.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 27 2011, 08:40
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Интересная штука GCC! Неисчерпаемая, как атом  Перевести всё на sh наверно мысль дельная, будет универсальность и кроссплатформенность. Надо подумать. Ну а навскидку, какие там ещё подводные грабли, чтобы три раза не спрашивать?
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
May 27 2011, 09:08
|

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

|
Это не GCC, это make, он как бы сбоку  Грабли - сейчас уже и не вспомню. Помню, что на Код echo *** compiling... sh реагировал весьма своеобразно (раскрывал "shell patterns"). Заменил "***" на "---". И что-то с rar-ом никак не уживался, этот sh. Сначала я вышел из положения монструозной конструкцией Код @cmd /WAIT /C 'start $(RAR) a -r -agyy-mm-dd,hh-nn-ss $(BAKDIR)/$(TARGET)_.rar $(RARS)' , а потом и вовсе перешёл на 7z.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 28 2011, 05:31
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(AHTOXA @ May 27 2011, 15:36)  Ещё раз: Если make находит sh, то может использовать его. Если не находит - обходится без. Именно поэтому - непредсказуемости поведения - всегда исключал это звено из сборки. Только make и штатное окружение консоли венды. Возможно, под линухом с ним всё шоколадно, но в венде смысла в этих сторонних шеллах мало. Цитата(MrYuran @ May 27 2011, 15:40)  Перевести всё на sh наверно мысль дельная, будет универсальность и кроссплатформенность. Надо подумать. Надо вообще этот make фтопку. Есть более приятные инструменты для этих целей. Я использую уже года 4 или 5 SCons. Питоновый скрипт, по сути. Там можно делать всё - от написания билдеров (функций сборки) до всяких вспомогательных действий типа обработки строк, работы с файлами - словом всё, что доступно полноценному языку программирования. И особенно приятно, что открыв скрипт сборки через полгода без всяких проблем читаешь и правишь код. На make же постоянно приходилось лезть в доку, чтобы вспомнить, что обозначают закорючки типа $< или $@. Да остальной синтаксис через подстановки $(...) не добавляет радости. Птичий язык. Привычка, конечно, многое решает, но за достаточно много лет использования make никогда не испытывал удовольствия от работы с ним. Приобретённый опыт, конечно, помогает по жизни (вот щас c Qt ковыряюсь, пока в рамках его оболочки и организации проектов, там на make основано), но очень рад, что в основном этот этап уже позади.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 30 2011, 03:57
|

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

|
Цитата(dxp @ May 28 2011, 11:31)  Именно поэтому - непредсказуемости поведения - всегда исключал это звено из сборки. Я тоже исключал. А теперь вроде как изучил особенности, и стало всё предсказуемым  Всё-таки sh изрядно расширяет функциональность make. Цитата Надо вообще этот make фтопку. Есть более приятные инструменты для этих целей. Я использую уже года 4 или 5 SCons. Смотрел немного на него. Вроде заманчиво... Но это, по сути, учить ещё один язык, нужно тратить время и усилия. Пока не складывается. Есть какая-нибудь ссылка на "быстрый старт"?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
May 30 2011, 07:20
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(AHTOXA @ May 30 2011, 10:57)  Я тоже исключал. А теперь вроде как изучил особенности, и стало всё предсказуемым  Всё-таки sh изрядно расширяет функциональность make. При наличии сконса эта функциональность присутствует нативно и на гораздо более высоком уровне.  Цитата(AHTOXA @ May 30 2011, 10:57)  Смотрел немного на него. Вроде заманчиво... Но это, по сути, учить ещё один язык, нужно тратить время и усилия. Язык там один надо учить - питон. А это по-любому надо, т.к. оченно могучее средство на всякие случаи. Не настаиваю именно на питоне, есть и другие аналогичные типа Ruby. Тут уж кому что нравится. И большой фактор - окружение, т.е. чтобы было кому вопросы задавать, которые всегда появляются в процессе освоения. Цитата(AHTOXA @ May 30 2011, 10:57)  Пока не складывается. Есть какая-нибудь ссылка на "быстрый старт"? Хм, специальной ссылки не знаю. Я по документации шёл. Она вполне понятна. Главное - ухватить основную идею. Главное отличие от make там в том, что make основан на правилах: пользователь задаёт правила (явные и неявные), и утилита на основе этих правил строит зависимости. В этом есть определённая гибкость и мощь, но и система эта сложнее для понимания и прогнозирования действий. В SCons идеология иная: там на уровне скрипта (языка Python) как бы задаётся план действий. Т.е. прямо (путём назначения целей и вызова функций в процессе выполнения скрипта SConstruct - аналог makefile) строится типа списка запланированных действий, которые по окончании прогона SConstruct запускаются на выполнение. Соответственно, весь маршрут линеен и на виду, на любом этапе (которые явные) можно что-то добавить, убрать, откорректировать. Надо отметить, что в целом SCons - это не аналог make, а скорее аналог связки automake+make, т.е. он автоматом "знает" что запускать по какой платформой и т.п. Но мне такой функционал не был нужен, мне надо было средство - аналог make + удобный набор возможностей по обработке текстовых строк, сопутствующей арифметике, работе с файлами и директориями и т.д. И чтобы всё это было гуманно по отношению к пользователю, т.ч. чтобы после энмесячного перерыва можно было открыть исходник скрипта и спокойно чего читать/редактировать, не обращаясь к документации в качестве справочника. Поэтому я там первым делом удалил весь набор встроенных билдеров (функций сборки) и добавил свои. Если интересуешься, то возьми для начала какой-нибудь мой вариант из примеров для MSP430. Если как-то знаком с питоном, что порог вхождения там намного ниже, чем с тем же make. Все вопросы кидай в асю, с удовольствием отвечу.  Ну, а для начала просто доку на один раз пробежать на досуге.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|