LINUX.ORG.RU

Не собирается проект в Code::Blocks.

 , ,


0

2

Я новичок в linux да и в codeblocks тоже. Так сложилось что нужно писать лабораторные работы, а ноут слабенький: на интел атоме и с 2 гб оперативы, поэтому решил накатить себе убунту. Выбор IDE для c++ пал на codeblocks, вроде как его хвалили, ну а я и решил попробовать. Суть проблемы заключается в том,что при сборке возникает ошибка: error: obj/Debug/main.o: нет такого файла или каталога error: no input files Кстати я и правда там этого файла не нашёл. Несколько раз пробовал пересоздавать проект, но всё тщетно. Даже сам создал файл main.o, при этом выдавал другую ошибку, правда уже не помню какую. Не знаю, требуется ли код программы, но на всякий случай оставлю его здесь

#include <iostream>

using namespace std;

int main() { cout << «Hello world!» << endl;

system(«pause >> void»); return 0; }

по wiki делал и не получается? Там конечно под windows, но представление должен был получить... Компилятор установлен? IDE о нём «в курсе»? main.o это объектный файл — получается после обработки исходного файла компилятором.

anymouze ★★ ()
Ответ на: комментарий от Enem20

нет, «где-то что-то не то»... вот урок посмотри. я всё же думаю, что настройки где-то некорректные в IDE. Может попробуешь обойтись сборкой вне IDE? Вот так для начала

anymouze ★★ ()
Ответ на: комментарий от anymouze

Может это потому что я использовал шаблон консольной программы? хотя бред же. я вообще привык к среде разработки, там всё получается красиво и ровно:). но если прям выхода не будет, то буду пользоваться терминалом

Enem20 ()

Скачай (установи из реп) лучше Qt Creator как C++ IDE. Запусти и выбери в главном меню: Файл => Создать файл или проект => Проект без Qt => Приложение на языке C++ => Выбрать => Далее ... => Завершить.

Ну и потом нажми Ctrl+R для сборки и запуска.

Code::Blocks вечно какой-то кривой и не особо развивающийся.

EXL ★★★★★ ()
Ответ на: комментарий от EXL

Смерти его хочешь?

на интел атоме и с 2 гб оперативы

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

Ему CB с головой хватит, учитывая наличие даже версии не требующей установки.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 2)
Ответ на: комментарий от EXL

установил qt, всё работает, спасибо. А шаблонов под c++ к нему можно найти? может все-таки решить проблему с code::blockes для остальных нуждающихся?

Enem20 ()
Ответ на: комментарий от grem

с Qt в принципе он нормально справляется, правда компилит не так быстро как хотелось бы, но всё же компилит и мне пока достаточно. а насчёт ошибки в коде, что я сделал не так?

Enem20 ()
Ответ на: комментарий от grem

открыл в блокноте копию main.cpp,удалил из него текст чтобы среда в него могла нормально записать что-то и поменял расширение

Enem20 ()
Ответ на: комментарий от Enem20

А шаблонов под c++ к нему можно найти?

Ммм? Что именно ты имеешь ввиду под шаблонами? Шаблоны C++ доступны из коробки. Подключаешь, используешь.

Или шаблоны всякого там кода, аля пример формы с кнопкой на Qt или пример консольного приложения на Qt? Это всё имеется в «Файл => Создать файл или проект», куча всяких там вариантов начала разработки приложения. Так же можешь попробовать установить примеры приложений на Qt. Должны быть доступны в репозитории твоего дистрибутива.

Или же тебя сниппеты интересуют? Так они вроде как автоматом при автодополнении могут выбираться. К примеру, пишешь for... и пункт автодополнения тебе сгенерирует в редакторе типовой для этого случая вариант.

правда компилит не так быстро как хотелось бы

Можно попробовать CMake установить в дистрибутиве и выбрать его как систему сборки для нового проекта. Но на 2GB и Atom'е особо не разгуляешься, конечно.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от grem

Смерти его хочешь?

Смерти кого/чего? IDE Code::Blocks? Да мне как-то фиолетово, жив он или нет. Я последний раз запускал его в 2010 году и уже тогда он отставал от только-только начинающего делать свои первые шаги Qt Creator. А есть ещё CodeLight, кстати. Такой же «полуживой», наверное.

Он с более простой IDE то разобраться не в состоянии.

Мне кажется, что Qt Creator попроще в освоении. Разве что парадигма табов/вкладок здесь не используется.

Это при том, что проблема у него была исключительно в коде.

Ну нет же. Проблема у него там где-то во взаимодействии/настройки компилятора и Code::Blocks.

Ему CB с головой хватит, учитывая наличие даже версии не требующей установки.

Ага. Вот только бы Code::Blocks был настроен «из коробки», как тот же Qt Creator. Кстати он неплохо работает на 2GB. Не знаю, какую версию там установил ТС, но в последних парсинг С++ осуществляется через libClang и это прямо-таки дало глоток свежего воздуха Qt Creator'у.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от Enem20

В CB новый проект просто создаётся как New - Project - Console application (или что там нужно). Указывается куда сохранить и имя, выбирается компилятор.

Всё, проект с примером hello world готов (открываешь main.cpp в списке файлов), никаких строчек «system(«pause >> void»); return 0; }» дописывать не нужно. Собираешь, запускаешь.

Если с Qt creator хватает памяти, то тож сойдёт, хуже не будет. Не помню только, умеет он сам проект раскиданный по разным файлам собирать без самописных cmake (и прочих) файлов?

grem ★★★★★ ()
Ответ на: комментарий от EXL

О да, аж на целый год позже вышел стабильный релиз. Только не забудь, что qt creator ориентировался на 1 язык.

Можно ли в qt creator собирать проект написанный для чистого Си (для gcc, а не g++)? Только не надо писать, что они полностью совместимы и код всегда переносим.

Как насчёт разработки из qr creator для микроконтроллеров?

Code::Blocks был настроен «из коробки»

Что там не настроено из коробки? Xterm на konsole не заменён?

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от Enem20

Это так не работает. Не надо так делать. Никогда.

Не только здесь. Переименование расширения не меняет формат файла, его структуру и содержимое.

grem ★★★★★ ()
Ответ на: комментарий от grem

Можно ли в qt creator собирать проект написанный для чистого Си (для gcc, а не g++)? Только не надо писать, что они полностью совместимы и код всегда переносим.

Что, лол? http://esxi.z-lab.me:666/~exl_lab/screens/QtCreator_C_Project.png
Тут некоторые в ядре с помощью Qt Creator ковыряются. Не говоря уж о том, что в этой IDE имеется поддержка autotools'ов из коробки, хоть и неполная (через Makefile.am).

Как насчёт разработки из qr creator для микроконтроллеров?

Внезапно, там есть поддержка Bare Metal и средства удалённого запуска/отладки. И даже некоторые вкусные плюшки, вроде QBS можно использовать:

https://habr.com/post/222877/
https://habr.com/post/258467/
https://xpcc.io/guide/qtcreator/

И как минимум я знаю несколько пользователей ЛОРа, которые используют Qt Creator для разработки чего-либо на МК. Даже кастану их всех сюда, чтобы они поделились своим мнением на этот счёт, удобно им или нет его юзать. Если у них, конечно, будет на это время.

h4tr3d, pon4ik, kuzulis

Я не использую, но если бы потребовалось мне написать что-то под какой-либо МК, взял бы Qt Creator не раздумывая. Что-то сильно сомневаюсь, что Code::Blocks для разработки под МК использует больше человек, чем Qt Creator.

EXL ★★★★★ ()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от grem

Что там не настроено из коробки? Xterm на konsole не заменён?

Ты у меня спрашиваешь? Ты должен это у ТС спрашивать. Код, даже несмотря на этот system("pause >> void"), корректный и 100% должен компилироваться. Почему Code::Blocks его не собирает и требует от ТС каких-то дополнительных телодвижений по настройке или чего-либо ещё, я не знаю.

EXL ★★★★★ ()

Ты зря с Code::Blocks связался. IDE, такая, своеобразная. Тем более для новичка. А уж когда сессия, а лабы не сданы - это вообще ахтунг.

Deleted ()
Ответ на: комментарий от EXL

Им походу лабы в сабже задали. В принципе, препод правильно делает. Code::Blocks приучает думать. Студень идёт сдавать лабы и сразу видно, что делал их не он.

Deleted ()
Ответ на: комментарий от EXL

Если что, я никогда не разрабатывал под МК в qtc(максимум под arm). Да и вообще слез с него в пользу vim'a :)

А так, какая разница в чём, надо только тулчейн настроить. Ну в qtc хороший инструментарий из коробки, да. Если собирать cmake'ом, то можно надобавлять кастомных шагов деплоя и радоваться жизни почти как под x86*|arm с минимальными усилиями. Code::Blocks в этом плане меня так никогда не радовал.

pon4ik ★★★★★ ()
Ответ на: комментарий от Deleted

Удваиваю этого господина. Code::Blocks ценится теми, кто готов его патчить. Я только двух таких извращенцев помню, это Iron_Bug и аноним не представленный на лоре (ну или я не в курсе никнейма).

pon4ik ★★★★★ ()
Ответ на: комментарий от grem

Конкретно под чистый C - работает, но когда крайний раз тыкал, иногда, вылезали предупреждения про C++ вместо C. Но, допускаю, что это могут быть баги шланга.

pon4ik ★★★★★ ()
Ответ на: комментарий от Enem20

дело не в шаблоне. дело в том, что ide ожидает от компилятора объектный файл, из которого «потом» слинкуется программа. и что-то пошло не так... я этой ide никогда не пользовался, могу только гадать что нужно настроить. У них же есть форум? Может там поискать (если собираешься использовать Code::Blocks). Посмотри ошибки компиляции, возможно компилятору твой код не «нравиться» — объектный файл и не создаётся.

anymouze ★★ ()
Ответ на: комментарий от pon4ik

Если собирать cmake'ом, то можно надобавлять кастомных шагов деплоя и радоваться жизни почти как под x86*|arm

Ненене, вот только не надо про CMake втирать, что оно есть гуд.

kuzulis ★★ ()
Ответ на: комментарий от EXL

Я не использую, но если бы потребовалось мне написать что-то под какой-либо МК, взял бы Qt Creator не раздумывая.

Вполне успешно разработка под МК ведется на QtC. Только в качестве билд-системы используется QBS, т.к. она оч. гибкая и удобная.

Пробовал CMake - но не вышло (даже банальная не bare-metal кросс-компиляция под Linux не взлетела, что уж говорить про bare-metal).

На данный момент «из коробки» в QtC && QBS поддерживаются GCC тулчейны как под АРМ, так и АВР. Прям настроил комплекты/Kits и сразу работай! :)

Для отладки также используется GDB через OpenOCD или ST-Link Utility. Если имеется какой-то кастомный GDB Server (не OpenOCD или не ST-Link Utility), то можно отлаживать также, просто вручную запускать кастомные GDB сервера и аттачиться.

Для использования тулчейнов от IAR && Keil в QBS (как и в QtC) пока ничего нет. Я тут пытаюсь написать cpp модуль для работы с компилером от IAR (сначала для себя потестю, а потом, может, если дойдут руки попытаюсь выложить в аппстрим в QBS). Но в общем, для QBS не проблема написать модуль для нового тулчейна (там просто наскриптовать в JS), работы на дня 2-3.

Знаю, что в CMake есть поддержка IAR, но хз работает ли оно вообще (т.е. можно было бы CMake использовать в QtC для bare-metal). Но у меня аллергия на CMake и блевотные рефлексы. :)

В основном в QtC проблема с отладкой не GDB-based тулчейнов (теже IAR, Keil). Нужно писать плагины в QtC (по аналогии с MSVC отладчиком наверно).

kuzulis ★★ ()
Последнее исправление: kuzulis (всего исправлений: 2)
Ответ на: комментарий от EXL

С чего это этот код корректен? Что реализует вызов system и pause? Разве это не фича имплементированная в поставку msvc?

ТС сам эту строчку дописал, её не было в проекте по умолчанию. То есть ещё вопрос каким образом он создал проект?

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от pon4ik

Я не патчу, но ценю тем, что в нём одновременно есть поддержка фортрана и он не ворочается по при этом еле-еле как IDE на java.

Для простых проектов вполне годен.

grem ★★★★★ ()
Ответ на: комментарий от grem

С чего это этот код корректен?

Эм. Внезапно, с точки зрения компилятора:

[~/Sandbox/C_C++]$ cat shit.cpp 
#include <iostream>

using namespace std;

int main() { cout << "Hello world!" << endl;

system("pause >> void"); return 0; }

[~/Sandbox/C_C++]$ g++ shit.cpp 

[~/Sandbox/C_C++]$ ./a.out 
Hello world!
sh: pause: command not found

Что реализует вызов system и pause?
Разве это не фича имплементированная в поставку msvc?

1. system — libc aka cstdlib, pause — вызываемая команда Shell-оболочки, отсутствующая в *nix'ах естественно.
2. Нет, с чего бы.

EXL ★★★★★ ()

Версия C::B? Версия GCC?

system(«pause >> void»);

Что за ерунда тут у тебя?

shkolnick-kun ★★★★★ ()
Ответ на: комментарий от shkolnick-kun

Не помню есть ли в убунте по умолчанию g++,так как в некоторых дистрибутивах есть gcc и нет g++. Тогда, возможно, для проекта c++ не получилось вызвать компилятор, а линковщик уже ругнулся.

grem ★★★★★ ()
Ответ на: комментарий от shkolnick-kun

Видимо тебе не сильно много нужно. Мне вот например последнее время тоже.

pon4ik ★★★★★ ()
Ответ на: комментарий от grem

Для любых проектов годно любое средство. Вопрос чисто в эффективности средства и навыках трудящегося над проектом индивида.

pon4ik ★★★★★ ()
Ответ на: комментарий от shkolnick-kun

gcc у меня присутствует. это логично как минимум из-за того, что ошибок высыпало бы больше,а не одну. тем более что на просторах нета я уже читал проблемы тех у кого он не установлен, это не то

Enem20 ()
Ответ на: комментарий от EXL

У меня в основном разработка и отладка под Cypress FX3, код прошивок для девайсов Epiphan Systems Inc линейки AV.io и KVM2USB 3.0. Там правда у меня C++ ;-) Используется OpenOCD для загрузки и отладки кода по JTAG через Baremetal плагин (правда в сам OpenOCD пришлось коммитить, добавить поддержку ThreadX для ARM926E-JS: https://habr.com/post/249991/). А один сценарий вообще такой: https://habr.com/post/274179/ (в дополнение линков с хабра). Сборку сделал на CMake (сам сделал шаблон для Cypress FX3, есть на гитхабе).

Для них же драйвер для PCIe и USB устройств на Linux, там уже чистый C. В качестве проекта использую CMake враппер, что бы более адекватно строить кодовую модель, разложив файлы по таргетам и вытащив из сборки (Makefile-based) параметры компилятора и так далее. Частично использую механизмы деплоймента, что бы собрать драйвер на другой машине и загрузить его.

Есть мелкие нарекания. В частности навигация по коду в Clion ощутимо лучше, удобнее реализован поиск произвольных символов (который по Double Shift). Правда (для меня) на этом достоинства и заканчиваются. В остальном QtC уже заруливает. Удобно задавать компиляторы через Kit'ы, параметры для сборок. В CMakeProjectManager есть адекватный механизм передачи параметров в CMake (по типу как реализовано в cmake-gui, правда пока не обрабатываются типы параметров FILEPATH и DIRPATH /пишу по памяти/, точнее обрабатываются как STRING, т.е. не подставляется делегат для редактирования, что бы можно было открыть файловый диалог и нужно просто редактировать ручками как строку).

Кстати, я вообще QtC практически для разработки на Qt не использую, при том, что это мой основной инструмент, пусть не идеальный, но на текущий момент наиболее удобный. А по сравнению с Clion, досадные баги я сам исправляю и уже не раз коммитил в апстрим.

Сейчас ещё впилили зачаток LangServer Client, пока в основном для пистона, добавили экспорт кодовой модели в compile_commands.json и добавили менеджер проектов, который читает compile_commands.json. Я пока сильно не распробовал, теоретически должно быть куда лучше Generic Project Manager для работы с проектами с произвольной системой сборки (ну, в определённых пределах).

ЗЫ если будет интересно за CMake wrapper, можно отдельно посмотреть на говноподелку коллективного бессознательного в нашей компании, хоть и удобную :) Работает как для QtC так и для Clion.

h4tr3d ★★★★★ ()
Последнее исправление: h4tr3d (всего исправлений: 1)
Ответ на: комментарий от kuzulis

Оно может и не гуд, но куда лучше Plain Makefile, который превращается в персольный адъ, когда хочется иметь несколько сборок с разным набором параметров (читай: -DFOO=1 -DBAR=2), и нужно следить за актуальностью объектников собранных и не пересобирать эти конфигурации с нуля, теневая сборка там и прочие плюшки, или хотя бы как-то из IDE вытащить файлы для кодовой модели.

h4tr3d ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.