Vlad_9 0 14 октября, 2017 Опубликовано 14 октября, 2017 · Жалоба Вот команда компилятору compiling main.c /home/vlad/proj/gcc-arm-none-eabi-5_4-2016q3/bin/arm-none-eabi-gcc -g -O0 -Wall -Wextra -pipe -fvisibility=default -mcpu=cortex-m3 -I/home/vlad/MyTestt1122/mbed-src/api -I/home/vlad/MyTestt1122/mbed-src/hal -I/home/vlad/MyTestt1122/mbed-src/targets/cmsis -I/home/vlad/MyTestt1122/mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F1 -I/home/vlad/MyTestt1122/mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB -I/home/vlad/MyTestt1122/mbed-src/targets/hal/TARGET_STM/TARGET_STM32F1 -I/home/vlad/MyTestt1122/mbed-src/targets/hal/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB -o /home/vlad/build-MyTestt1122-STM-Debug/qtc_STM_5_baff355f-debug/MyTestt1122.qtc-STM-5-baff355f.610408b1/.obj/3a52ce780950d4d9/main.c.o -c /home/vlad/MyTestt1122/main.c Вот файл QBS: import qbs.ModUtils Product { type: "application" Depends { name:"cpp" } property string mbed: "mbed-src/" property string devices: "mbed-devices/" property string rtos: "mbed-rtos/" property string vendor: "STM" property string model: "STM32F1" property string cortex: "M3" cpp.defines: [] cpp.positionIndependentCode: false cpp.debugInformation: true cpp.embedInfoPlist : "" cpp.executableSuffix: ".elf" cpp.commonCompilerFlags: [ "-mcpu=cortex-m3"] cpp.linkerFlags:[ "-mcpu=cortex-m3"] cpp.includePaths: [ mbed+"api", mbed+"hal", mbed+"targets/cmsis/", mbed+"targets/cmsis/TARGET_"+vendor+"/TARGET_"+model+"/", mbed+"targets/cmsis/TARGET_"+vendor+"/TARGET_"+model+"/TARGET_NUCLEO_F103RB/", mbed+"targets/hal/TARGET_"+vendor+"/TARGET_"+model+"/", mbed+"targets/hal/TARGET_"+vendor+"/TARGET_"+model+"/TARGET_NUCLEO_F103RB/" ] files: [ "main.c", "mbed-src/targets/cmsis/TARGET_STM/TARGET_STM32F1/TARGET_NUCLEO_F103RB/stm32f1xx.h", "mbed-src/targets/cmsis/core_cm3.h", ] } Откуда берутся флаги -g -O0 -Wall -Wextra -pipe -fvisibility=default? В QBS файле их нету. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 14 октября, 2017 Опубликовано 14 октября, 2017 · Жалоба Откуда берутся флаги -g -O0 -Wall -Wextra -pipe -fvisibility=default? В QBS файле их нету. -g, скорее всего, из-за строчки cpp.debugInformation: true Надо смотреть исходники QBS, какие ключи по умолчанию задаются для проекта. UPD.: Какие значения у вас для QMAKE_CXXFLAGS_DEBUG и RELEASE? Файл qbs-porting.qdoc из репозитория git://code.qt.io/qt-labs/qbs.git Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_9 0 14 октября, 2017 Опубликовано 14 октября, 2017 · Жалоба Надо смотреть исходники QBS, какие ключи по умолчанию задаются для проекта. Я не собирал ставил готовые пакеты с оф сайта. Ключи надеюсь прописаны в каком нибудь конфиге. UPD.: Какие значения у вас для QMAKE_CXXFLAGS_DEBUG и RELEASE? Где это посмотреть? Так понимаю qbs-porting.qdoc? Который часть исходника? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 14 октября, 2017 Опубликовано 14 октября, 2017 · Жалоба Я не собирал ставил готовые пакеты с оф сайта. Ключи надеюсь прописаны в каком нибудь конфиге. Где это посмотреть? Так понимаю qbs-porting.qdoc? Который часть исходника? В файле .pro в каталоге вашего проекта. Либо он системные параметры берет. Видимо, QMAKE_CXXFLAGS анализируются при конвертации сборки в формат qbs. Дописал ответ. Становится понятно теперь, как происходит заполнение этих параметров. Я работаю с Makefile, где все явно указано. Не люблю эти надстройки. Вот частично ответ на ваши вопросы: http://lists.qt-project.org/pipermail/qbs/...ber/001038.html А тут подробнее: https://github.com/qbs/qbs/blob/a91bf40e89f...ules/cpp/gcc.js Получается, что, как я предполагал в начале, надо смотреть, чем он заполняет по умолчанию. if (input.cpp.debugInformation) args.push('-g'); var opt = input.cpp.optimization if (opt === 'fast') args.push('-O2'); if (opt === 'small') args.push('-Os'); if (opt === 'none') args.push('-O0'); var warnings = input.cpp.warningLevel if (warnings === 'none') args.push('-w'); if (warnings === 'all') { args.push('-Wall'); args.push('-Wextra'); } А здесь видно, что по умолчанию стоит значение all для warning'ов: https://github.com/qbs/qbs/blob/40787b4d077...pModule.qbs#L47 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_9 0 15 октября, 2017 Опубликовано 15 октября, 2017 · Жалоба Да спасибо большое, понял что QT насильно добавляет эти ключи, значение которых прописано по умолчанию. Неприятный сюрприз. Теперь я даже не знаю куда шагать. История такая надоел Windows решил пересесть на Линукс, подтолкнула статья на Хабре об использование Qt для микроконтроллеров. Линукс поставил сначала попробовал использовать виндовую IDE которой пользовался раньше. Но под Линуксом полностью запустить не получилось. Путь первый VmWare с виндой проблема с заливкой прошивки пока остается для меня загадкой. GDB сервер не может прочитать данные по определенному адресу. Причем пробовал два варианта. Вариант первый это GDB сервер в винде. Второй вариант это GDB сервер в Линуксе связь через TCP проблема не в GDB сервере так как он IDE запущенyой под wine все шьет и читает без проблем. Путь второй Wine все работает проект заливается в контроллер, но проблема с редактором не работает вставка из буфера обмена (Ctrl+v) ошибка приложение вываливается. Третий путь это Qt с Bare Metal и QBS. Проблема компилятор ругается на процессор причем из за флагов по умолчанию прописанных. Какой точно еще не выяснил, наверное попробую почитать про флаги, может найдется какое нибудь решение. Четвертый не проверенный путь это Эклипс. Установил, интерфейс по моему сложный, ну не понравился вообщем, если ничего не получится наверное буду пробовать. Опыта работы с make нет IDE делала все сама. Так что вот как-то так. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 15 октября, 2017 Опубликовано 15 октября, 2017 · Жалоба Я работаю в KDevelop. С мэйками. Стоит один раз научиться, чтобы потом всю жизнь пользоваться. CodeBlocks плох тем, что там нужно явно указывать пути до компилятора. В Qt Creator я настроил проект для STM, который работает с Makefile. В KDevelop все очень просто. Сборка сразу идет, используя Makefile, в самой IDE указывается только путь до GDB и начальный скрипт, который устанавливает связь по нужному порту. KDevelop кроссплатформенный. По поводу Эклипса - он на Ява, у меня в системы Явы нет, потому что для каждого пакета обычно требуется своя особенная Ява, что очень плохо. Вернее, есть у меня. Только установлена она локально вместе с MATLAB, и система её, естественно, не видит. Но самое простое, наверное, - это Эклипс. Для STM по нему тысячи статей, много плагинов и и.д. Я никогда не работал в этой среде,не могу что-то сказать. P.S. На GitHub очень много примеров мэйков. Учитесь. Тога вы сможете пользоваться любым редактором или собирать прямо из консоли. P.P.S. Еще есть неплохой редактор Sublime. Мне понравился. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_9 0 15 октября, 2017 Опубликовано 15 октября, 2017 (изменено) · Жалоба CodeBlocks плох тем, что там нужно явно указывать пути до компилятора. Что в этом плохого? На GitHub очень много примеров мэйков. Учитесь. Тога вы сможете пользоваться любым редактором или собирать прямо из консоли. Наверное подошел к этому этапу, пол шага осталось. По Эклипс врятли буду использовать. Если что вернусь к винде или make изучать. Выяснилось Wine ошибка если копирую текст из редактора, и вставляю. А если текст из другой программы скопирован то вставка проходит нормально. Изменено 15 октября, 2017 пользователем Vlad_9 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 15 октября, 2017 Опубликовано 15 октября, 2017 · Жалоба Что в этом плохого? То, что путь до компилятора должен указываться в Makefile. Иначе получается дублирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_9 0 15 октября, 2017 Опубликовано 15 октября, 2017 · Жалоба В Qt Creator я настроил проект для STM, который работает с Makefile. Можете проектом поделится? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 15 октября, 2017 Опубликовано 15 октября, 2017 · Жалоба Можете проектом поделится? Мой не сохранился. Это же не для работы был, а ради интереса. Здесь все написано: https://morf.lv/nrf51-makefile-with-qt-creator В конце архив с проектом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться