Перейти к содержанию
    

Поскольку у вас в проекте нет ни одного cpp- файла, то линковка идёт по первой ветке:

# use $(CC) for C-only projects or $(CPP) for C++-projects:
ifeq "$(strip $(CPPSRC)$(CPPARM))" ""
    @$(CC) $(THUMB) $(CFLAGS) $(DEPFLAGS) $(ALLOBJ) --output $@ -nostartfiles
else
    $(CPP) $(THUMB) $(CFLAGS) $(DEPFLAGS) $(ALLOBJ) --output $@ $(LDFLAGS)
endif

А в этой ветке LDFLAGS не указаны.

 

ЗЫ. У make есть ключик -n, который заставляет его ничего не выполнять, а лишь печатать команды, которые он будет выполнять. Очень удобно смотреть, как будет идти выполнение makefile.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в этой ветке LDFLAGS не указаны.

 

ЗЫ. У make есть ключик -n, который заставляет его ничего не выполнять, а лишь печатать команды, которые он будет выполнять. Очень удобно смотреть, как будет идти выполнение makefile.

 

искренне благодарю. все собирается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сегодня окончательно ушел с eclipse Luna, ибо этот глюкодром стал ни на что не пригоден.

перешел в gdb с ком.строкой - исчезли глюки с spi - когда бегаешь по всем углам и не знаешь, кто неправ. а неправа в итоге связка отладчика. :smile3046:

и как многие говорят: пишите собственные мейкфайлы (занятие не для экспресс-макетов), так и теперь могу сказать - пользуйтесь чистым gdb :) благо, ему через командные файлы очень много можно сказать.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

доброго вечера

 

может тема вопроса заезженная или вообще не в ту ветку написал...все же...

 

eclipse + gcc + ARM + LwIP RAW, есть структура файлов:

D:\Tools\LwIP - тут последняя версия, которая тянется из GIT-репозитория

D:\Projects\EclipseWorkSpace\Project_1

 

хочу, чтобы Project_1 (в котором веб сервер будет на базе LwIP) был минимально связан с папкой LwIP

 

т.е. хочу, чтобы исходники и хедеры в папке LwIP не менялись и не допиливались вообще. чтобы все, что зависит от мк (в том числе и lwipopts.h,

lwippools.h, драйверы PHY и т.д.) хранилось в подпапке проекта.

 

все подключения делаю через make, голый eclipse через discovery все резолвит - исходники компилируются, eclipse по подключенным папкам прыгает - файлы открывает, все вроде неплохо, но - есть src/lwip/timers.c - таймеры LwIP, которые хотят процедуру sys_now() (возвращает значение мс, которые считает SysTick) - вот как ее туда корректно передать ? так чтобы в исходниках LwIP ничего не менять

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть src/lwip/timers.c - таймеры LwIP, которые хотят процедуру sys_now() (возвращает значение мс, которые считает SysTick) - вот как ее туда корректно передать ? так чтобы в исходниках LwIP ничего не менять

Просто создайте такую функцию в любом файле проекта. Если ваш проект на c++, то обзовите её extern "C", типа так:

extern "C" unsigned long sys_now()
{
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Просто создайте такую функцию в любом файле проекта. Если ваш проект на c++, то обзовите её extern "C", типа так:

 

да, к слову. проект на С. в общем спасибо - магия форума сработала

на самом деле так и сделал - в папке_проекта/timer.c - который мой, так сказать, тикает раз в мс - его значение и возвращал в этой функции. почему не собиралось - не могу понять (и это хуже всего).

 

думал, что-то упускаю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При попытке собрать пример из scmRTOS, Eclipse ругается:

11:17:09 **** Incremental Build of configuration Default for project 1-EventFlag ****
all 
Cannot run program "": Launching failed

Error: Program "" not found in PATH
PATH=[C:\Program Files (x86)\GNU ARM Eclipse\Build Tools\2.6-201507152002\bin;...;C:\Program Files (x86)\GNU Tools ARM Embedded\5.2 2015q4\bin...]

Как видно, весь необходимый инструментарий установлен, пути прописаны.

Подскажите, пожалуйста, в чем может быть дело?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, пожалуйста, в чем может быть дело?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Почему же во всех руководствах жирным шрифтом пишут не менять путь установки по-умолчанию?

Ну да ладно.

Добавил кавычки в глобальных настройках (Preferences/C++/Build/Global Tool Paths) к путям Build tools folder и Toolchain folder. В результате Eclipse формирует путь:

PATH=[C:\Eclipse-Luna\"C:\Program Files (x86)\GNU ARM Eclipse\Build Tools\2.6-201507152002\bin";...C:\Program Files (x86)\GNU Tools ARM Embedded\5.2 2015q4\bin;...]

Естественно, не работает.

Исправил переменную PATH в настройках проекта (Properties/C++ Build/Environment) - убрал лишнее, поставил кавычки на всех путях :).

Все равно не работает.

Обновлено:

При перезаписывании свойств проекта в дереве проекта появляется папка Includes с подпапками "C:\Program Files (x86)\GNU Tools ARM Embedded\5.2 2015q4\..." и при попытке сборки Eclipse выдает уже такие сообщения:

15:16:07 **** Incremental Build of configuration Default for project 1-EventFlag ****
make all 
--- building 1-EventFlag
process_begin: CreateProcess(NULL, mkdir ./obj, ...) failed.
make (e=2): Не удается найти указанный файл.
<...>
--- compiling ./src/main.cpp...
./src/main.cpp:128:1: fatal error: opening dependency file obj/main.d: No such file or directory
}
^
compilation terminated.

Т.е. теперь make запускается, но почему-то не может выполнить команды mkdir. :(

Изменено пользователем Harvester

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делаю несколько иначе.

Я не пользуюсь настройками в Global Tool Paths. Т. е. пути там есть, но я не уверен, что среда ими пользуется.

Я создаю переменные ToolchainPath и CoreutilsPath типа Directory в Preferences/C++/Build/Build Variables, без кавычек.

Потом в Preferences/C++/Build/Environment создаю переменную PATH со значением ${CoreutilsPath};${ToolchainPath}, ниже надо выбрать Append variables to native environment, применить нажав Apply, OK.

Разумеется, в системной переменной PATH этих путей быть не должно.

Так всё работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делаю несколько иначе.

Я не пользуюсь настройками в Global Tool Paths. Т. е. пути там есть, но я не уверен, что среда ими пользуется.

Я создаю переменные ToolchainPath и CoreutilsPath типа Directory в Preferences/C++/Build/Build Variables, без кавычек.

Потом в Preferences/C++/Build/Environment создаю переменную PATH со значением ${CoreutilsPath};${ToolchainPath}, ниже надо выбрать Append variables to native environment, применить нажав Apply, OK.

Разумеется, в системной переменной PATH этих путей быть не должно.

Так всё работает.

А у меня почему-то нет :(

Но за совет спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При попытке сборки Eclipse выдает такие сообщения:

15:16:07 **** Incremental Build of configuration Default for project 1-EventFlag ****
make all 
--- building 1-EventFlag
process_begin: CreateProcess(NULL, mkdir ./obj, ...) failed.
make (e=2): Не удается найти указанный файл.
<...>
--- compiling ./src/main.cpp...
./src/main.cpp:128:1: fatal error: opening dependency file obj/main.d: No such file or directory
}
^
compilation terminated.

Т.е. теперь make запускается, но почему-то не может выполнить команды mkdir. :(

Порывшись по форуму кажется нашел причину - make вместо sh.exe запускает cmd.exe. А почему так происходит и как это исправить - нигде не могу найти. :crying:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А mkdir.exe там присутствует?

Он нужен, потому что mkdir - это встроенная команда cmd.exe, и sh.exe не умеет её запускать.

(mkdir.exe и ещё несколько нужных программ я брал, емнимс, из какого-то древнего winavr (в директории utils/bin)).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...