реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Eclipse для начинающего
berkl
сообщение Oct 8 2013, 10:49
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(сарматъ @ Oct 8 2013, 14:18) *
нет не так

импортировать надо один раз потом просто открываете мейкфайл в эклипсе и редактируете его как хотите и все



А где задание режима сборки в синтаксисе мэйкфайла находится ? Я сам его не пишу (cmake создает его у меня, мне трудно в нём ориентироваться).
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Oct 8 2013, 11:51
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



к сожалению этого я не знаю пока
Go to the top of the page
 
+Quote Post
Ixt
сообщение Oct 8 2013, 15:54
Сообщение #18


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(berkl @ Oct 8 2013, 14:49) *
А где задание режима сборки в синтаксисе мэйкфайла находится ? Я сам его не пишу (cmake создает его у меня, мне трудно в нём ориентироваться).


"Режим сборки" в GNU Makefile - это флаги. Обычно "-g", выключенная оптимизация для "Debug" и включённая оптимизация ("-O2") для "Release".
А вообще лучше не редактировать автоматически сгенерированные файлы.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Oct 8 2013, 17:31
Сообщение #19


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Ixt @ Oct 8 2013, 19:54) *
"Режим сборки" в GNU Makefile - это флаги. Обычно "-g", выключенная оптимизация для "Debug" и включённая оптимизация ("-O2") для "Release".
А вообще лучше не редактировать автоматически сгенерированные файлы.

IMHO, не корректно противопоставлять эти опции.

Из документации к gcc
Цитата
GCC allows you to use ‘-g’ with ‘-O’. The shortcuts taken by optimized code
may occasionally produce surprising results: some variables you declared may
not exist at all; flow of control may briefly move where you did not expect it;
some statements may not be executed because they compute constant results
or their values were already at hand; some statements may execute in different
places because they were moved out of loops.



--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Ixt
сообщение Oct 8 2013, 19:35
Сообщение #20


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(mdmitry @ Oct 8 2013, 21:31) *
IMHO, не корректно противопоставлять эти опции.


Угу. Если у нас несколько вариантов сборки, то можно собирать и релиз с отладочной информацией (что кстати тот же cmake позволяет делать). Но, вообще, оптимизация может мешать отладке и даже быть причиной некоторых малопонятных сбоев (опции из -O3). Поэтому всегда лучше иметь сборку с "-g -O0", в которой полностью уверен.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 9 2013, 06:00
Сообщение #21


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Ixt @ Oct 8 2013, 22:35) *
Поэтому всегда лучше иметь сборку с "-g -O0"
Чтобы отладив ее выкатить релиз с -O3 и те самые "некоторые малопонятные сбои" находил уже конечный пользователь?
Не говоря уже о том, что некоторые программы с -O0 вообще не собираются (при -O0 отключается встраивание).


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 9 2013, 07:23
Сообщение #22


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Разговор насчёт -O0 vs -O3 поднимается новичками с пугающей периодичностью и всякий раз грозит перерасти в религиозную войну.
Дабы не пришлось применять санкции, прошу участников этот вопрос не обсуждать.
Модератор
Go to the top of the page
 
+Quote Post
berkl
сообщение Oct 9 2013, 10:51
Сообщение #23


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(Ixt @ Oct 8 2013, 23:35) *
Угу. Если у нас несколько вариантов сборки, то можно собирать и релиз с отладочной информацией (что кстати тот же cmake позволяет делать). Но, вообще, оптимизация может мешать отладке и даже быть причиной некоторых малопонятных сбоев (опции из -O3). Поэтому всегда лучше иметь сборку с "-g -O0", в которой полностью уверен.


Я до этого писал для 16-битных камушков в BSO Tasking, Keil, MikroC, MPLAB. Везде приходил к тому что надо отключать оптимизацию. Тут видимо похожая ситуация. Приму к сведению.

Цитата(Ixt @ Oct 8 2013, 19:54) *
А вообще лучше не редактировать автоматически сгенерированные файлы.


Ясно. Сmake отдельно, Эклипс - отдельно.

Вопросы.

1. Сгенерил makefile с помощью команды cmake -DCMAKE_BUILD_TYPE=Debug . Затем полученным makefile собрал программку. Она (програмка) запускается без проблем из консоли. Это вообще нормально, что она может стартовать не из под дебуггера, а как будто я её в релизе собрал?

2. На базе этого же Makefile-проекта решил создать проект в Эклипсе и запустить его в релизе и в дебуггере. Делал так.
1. Создал папку проекта Project
2. В папке Project создал папки src (исходники .с ) incl (заголовки .h) build (файлы сборки проекта CMakeLists.txt, MakeFile, исполняемый файл и пр. СMakexxxxx файлы)
3. Импортировал соответствующие файлы из makefile-проекта в соответствующие папки.
4. В текстовом редакторе Эклипса поправил пути в импортированном CMakeLists.txt файле и запустил cmake из командной строки.
5. В Эклипсе иду Project --> Properties --> Builders. Там отключаю встроенный в Эклипс сборщик. и создаю свой (New). Для своего сборщика указываю путь к мэйку Убунты, а в "Working Directory" указываю путь до мною сгенерированного makefile (до папки build проекта)
6. Всё. Жму Cntrl+B, ошибок нет, исполняемый файл генерится.

Всё хорошо, но когда запускаю Run получаю сообщение Эклипса : The selection cannot be launched. and thare are no recent launches. При повторном нажатии Run, появляется: Launch failed. Binary not found. Это же сообщение появляется при запуске дебуггера (кнопка F11) Чо ей надо ?

В CmakeFile.txt у меня применены следующие опции компилятора:

Код
set( CMAKE_C_FLAGS_DEBUG "-O0 -Wall -pedantic" )
set( CMAKE_C_FLAGS "-O0 -Wall -pedantic" )



Спасибо.

PS Вот еще вопрос. Настройки своего билдера я устанавливаю в Project->Properties->Builders. А есть еще настройки билдера в Project->Properties->С/С++ Build->закладка Build Settings. Зачем они сделали одни и те же настройки в двух местах ? Мне и там и там надо тоже самое выставлять (путь до make и путь до makefile) ?

Сообщение отредактировал berkl - Oct 9 2013, 11:47
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 9 2013, 11:58
Сообщение #24


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (berkl @ Oct 9 2013, 13:51) *
Всё хорошо, но когда запускаю Run получаю сообщение Эклипса : The selection cannot be launched. and thare are no recent launches. При повторном нажатии Run, появляется: Launch failed. Binary not found. Это же сообщение появляется при запуске дебуггера (кнопка F11) Чо ей надо ?
В Project->Propertities->C/C++ Build ->Settings на вкладке Binary Parsers поставьте гадочку на GNU Elf Parser, а потом в Run->Debug configurations создайте правильную конфигурацию для отладки. Или впишите путь к исполняемому файлу в ту, которую Эклипса создала при первом вашем запуске отладки.
QUOTE (berkl @ Oct 9 2013, 13:51) *
PS Вот еще вопрос.
Этого не знаю. Никогда свой builder не создавал.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Oct 9 2013, 12:49
Сообщение #25


Частый гость
**

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



Цитата(berkl @ Oct 9 2013, 14:51) *
Везде приходил к тому что надо отключать оптимизацию. Тут видимо похожая ситуация. Приму к сведению.


лучше использовать volatile - отключение оптимизации для отдельных переменных
Go to the top of the page
 
+Quote Post
berkl
сообщение Oct 10 2013, 06:42
Сообщение #26


Частый гость
**

Группа: Участник
Сообщений: 123
Регистрация: 22-03-10
Пользователь №: 56 115



Цитата(Сергей Борщ @ Oct 9 2013, 15:58) *
В Project->Propertities->C/C++ Build ->Settings на вкладке Binary Parsers поставьте гадочку на GNU Elf Parser, а потом в Run->Debug configurations создайте правильную конфигурацию для отладки. Или впишите путь к исполняемому файлу в ту, которую Эклипса создала при первом вашем запуске отладки.
Этого не знаю. Никогда свой builder не создавал.


Галочка стояла уже, а вот в Run->Debug configurations надо было действительно указать путь к исполняемому файлу (по умолчанию там белеберда была потому что проект Эклипса полностью самопальный получился). Но всё равно дебаггер не запустился, не мог найти функцию main. Тут в постах выше писали мне про флаги. Я вставил у себя в CmakeFile.txt вместо старого
Код
set( CMAKE_C_FLAGS_DEBUG "-O0 -Wall -pedantic" )

вот это
Код
set( CMAKE_C_FLAGS_DEBUG "-g -O0 -Wall -pedantic" )

Сгенерил заново makefile, скомпилировал проект, всё, дебаг появился как нужно. Я так понял, именно флаг -g и говорит компилятору, что надо добавить к исполняемому файлу чего-то, что возьмет для себя дебуггер


Цитата(сарматъ @ Oct 9 2013, 16:49) *
лучше использовать volatile - отключение оптимизации для отдельных переменных

А если чужие исходники прикручивать к своему проекту? В них придется влазить тогда. Потом, оптимизация касается не только переменных. На сколько я знаю, сами функции могут быть "заоптимизированы". Не, нафиг, если без неё всё собирается то и не буду заморачиваться даже.

Спасибо товарищи ! santa2.gif

Сообщение отредактировал berkl - Oct 10 2013, 06:43
Go to the top of the page
 
+Quote Post
Micrick
сообщение Oct 11 2013, 09:52
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 24-03-10
Пользователь №: 56 178



Цитата(Micrick @ Oct 4 2013, 16:39) *
Хм... поудалял все проекты из папки "workspace". Теперь при запуске eclipse выдает сообщение :
Цитата
Problem occured, Unable to restore working set state. Details: Premature end of file.

Снес Эклипс, скопировал заново, запуск- тоже самое. sad.gif

Удалил папку workspace. Затем создал заново с новым проектом "Hello World". Все нормально. Проблем не выдает.

Цитата(сарматъ @ Oct 4 2013, 16:57) *
ешьте слона по частям, добейтесь чтоб в командной строке в терминале происходила компиляция - для начала без еклипса

Зашел в терминале в папку проекта, там где исходник Hello.cpp и запустил команду a@a:~/workspace/Hello/src$ g++ Hello.cpp
В ответ:
Цитата
The program 'g++' can be found in the following packages:
* g++
* pentium-builder
Try: sudo apt-get install <selected package>

Явно надо этот g++ инсталировать. Верно?!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 11 2013, 10:10
Сообщение #28


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Micrick @ Oct 11 2013, 12:52) *
Явно надо этот g++ инсталировать. Верно?!

Читайте внимательно ответы. Да, надо. см. ответ №5


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Micrick
сообщение Oct 11 2013, 10:35
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 24-03-10
Пользователь №: 56 178



Цитата(Сергей Борщ @ Oct 11 2013, 13:10) *
Читайте внимательно ответы. Да, надо. см. ответ №5

Это была риторика sm.gif
На sudo apt-get install g++ пишет, что мол,
Цитата
Note, selecting 'python-gconf' instead of 'python2.6-gconf'
Note, selecting 'libgphoto2-port0' instead of 'libgphoto2port'
libgssapi-krb5-2 is already the newest version.
xserver-xorg-input-vmmouse is already the newest version.
....................
В общем, много чего там is already the newest version.
....................
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
.....................
E: Broken packages

Цитата(Kermit @ Oct 4 2013, 19:16) *
Мне помогло следующее:
1. Установи eclipse из Ubuntu software center

А он:
Цитата
Failed to download repository information
Check your Internet connection.

Юбунтовский Firefox в инет нормально лезет.
Мож моя ubuntu 10.10 некошерна уже? laughing.gif

Сообщение отредактировал Micrick - Oct 11 2013, 10:52
Go to the top of the page
 
+Quote Post
Micrick
сообщение Oct 17 2013, 12:23
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 24-03-10
Пользователь №: 56 178



В общем, на данном этапе данные проблемы решились заменой VirtualBox на VMware Player (VB закапризничал) и Ubuntu10.10 на Ubuntu12.04 с беспроблемной установкой Eclipse, gcc и g++ через Software Center.

Сообщение отредактировал Micrick - Oct 17 2013, 12:24
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 09:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01494 секунд с 7
ELECTRONIX ©2004-2016