download.bg
 Вход Списание  Новини  Програми  Статии  Форум  Чат   Абонамент  Топ95   Архив 

Елементарни примери на "С" под Anjuta DevStudio и Glade - A User Interface Designer

< 1 2 >

Автор
Съобщение
zlatena
Чет, 30.09.10, 13:36
http://www.anjuta.org/
http://glade.gnome.org/
.............................................................................................
Инсталирах двете приложения на Ubuntu и сега ги разглеждам.
Някой има ли някакво мнение за тях,ако е правил нещо дори елементарно и го сподели,ще е добре дошло.
На линкове със свястни туториали няма да се обидя
Идеята е да пробвам да направя нещо елементарно под "С"
............
Дори най-лесното нещо е трудно- човек да опознае интерфейса на IDE-то и как да работи с Anjuta или Glade.
...............................................
Другото,което е интересно:
Под Линукс програмите са с отворен код и всеки може да го разглежда.
Мога ли да вкарам сорса на някоя програма в Anjuta например и да го компилирам?
Може би малко глупав въпрос,но какво да се прави
.................
Всъщност ето как се получи известното Hello world с Anjuta(на "С")

кака.лара
Чет, 30.09.10, 20:36
Мога ли да вкарам сорса на някоя програма в Anjuta например и да го компилирам?

На чиста теория няма как. За друг език козата си сака друг пръч.

Само за асемблер няма проблем.

Абе знам ли, може да има някакви нови номера измислени в тая Anjuta.

phrozencrew
Чет, 30.09.10, 21:27

RE: Елементарни примери на "С" под Anjuta DevStudio и Glade - A User Interface Designer

Мога ли да вкарам сорса на някоя програма в Anjuta например и да го компилирам?
Точно това е целта на програмата! Това е Front-End IDE за компилиране на програми, като ти предоставя доста удобства.
boy4o
Пет, 01.10.10, 20:36
При всички положения, не ми е известен начин да вкараш инлайн код на друг език в сорс на С, независимо каква IDE се използва. Проблемът е в това, че различните езици изискват не само различни компилатори, но и различни линкъри/мейкъри. По-перспективно ми се вижда външната процедура да бъде компилирана до обектен код и след това свързана със С-програмата посредством собствените компилер и линкър на С.

Не се познаваме с девойката Анюта/Anjuta, обаче мисля, че може да получиш достъп линкъра и до външните модули чрез опциите "Добавяне и поддръжка на споделени библиотеки" или "Конфигуриране на външни пакети" (една от картинките, които показваш). Поне ми се вижда логично. Бих предположил, че оттам се конфигурира линкърът, за да знае какво и от къде да импортира. Естествено - импортираните модули от други езици следва да бъдат предварително компилирани до формат DLL или OBJ.
 
Все пак, следва да се има предвид, че връзката с програми на друг език винаги е била слабо място на С. Даже по начало не е предвидено, но програмистите са хитър народ и са намерили начин да излъжат компилатора.
Включването на външна програма става като тя се декларира като функция от тип int и се използва квалификатор extern в комбинация с директива #includexetern<път и име> име_на_функция.

Нещо като:
#includexern<път и име> fun
...
extern int fun ( int x );
...
int bla;
bla = fun ( 0 );
...
 
Тук зацепките са много. Съвсем не всички компилатори поддържат директива includexetern (даже не е включена в официалния стандарт на С). Външната програма трябва да поддържа конвенцията за предаване на стойности в С. Във външния компилат трябва да се използва същото име (fun - в случая). Разнообразните несъответствия на файловите имена в различни ОС и т. н. Като цяло, възможностите за творческа инвенция в стил Салвадор Дали са прекалено много.
 
Аз поне не бих се заел с подобен експеримент, освен заради спасението на душата си. Дори и тогава бих (не виждам друг начин) включил всички сорсове на другия език в отделни файлове към документацията на програмата, а който си няма други грижи нека ги компилира и линква.
 
Ред: Мнението на господина под мен ми напомни, че Eclipse наистина притежава средства да генерира подходящи make-файлове дори за такива сложни случаи. Няма да се учудя, ако и Анюта има такива възможности. Но това си остава палиативно решение. Какво правим, ако не разполагаме с подобна IDE? Все пак gcc не умее да чете мисли, за да разбере каква точно плетка сме оплели, ограничен е в рамките на ISO/ANSI. И, освен това, остава си си проблемът с написването на външния модул в съгласуван със С-стандарта вид.

редактиран от boy4o на 01.10.10 22:30
phrozencrew
Пет, 01.10.10, 21:55
Отново не ви разбирам. Anjuta използва най-разпространеният компилатор за UNIX/Linux - gcc. Като освен това улеснява създаването (автоматизира го!) на необходимите файлове за инсталиране на приложения под тези системи - MAKE и INSTALL, както и други. Това е една идеална обвивка (IDE) за gcc. А всъщност с възможността за добавяне на плъгини, този Fron-end може да се превърне в един освободен от Java-та Eclipse, ако вече не се е превърнал.
phrozencrew
Съб, 02.10.10, 22:59

RE: Елементарни примери на "С" под Anjuta DevStudio и Glade - A User Interface Designer

Ред: Мнението на господина под мен ми напомни, че Eclipse наистина притежава средства да генерира подходящи make-файлове дори за такива сложни случаи. Няма да се учудя, ако и Анюта има такива възможности. Но това си остава палиативно решение. Какво правим, ако не разполагаме с подобна IDE? Все пак gcc не умее да чете мисли, за да разбере каква точно плетка сме оплели, ограничен е в рамките на ISO/ANSI. И, освен това, остава си си проблемът с написването на външния модул в съгласуван със С-стандарта вид. „
Предполагам, че никога, ама наистина никога не си се занимавал с програмиране под свободните операционни системи, защото меко казано говориш глупости.
Проектите с отворен код имат доста добра коментарна документация, а често са подплатени и с readme и install. Повечето програми (всъщност всички), които се използват в едно Ubuntu примерно, могат да се изтеглят като сорс код и да се компилират, като се съблюдават спецификите (хардуерни и софтуерни) на машината, на която ще върви програмата. Дали ще използваш IDE за компилирането или директно конзолата си е личен избор.
Нищо не ти пречи, просто да пробваш, вместо да се пишат десетки редове художествени измислици и алабалистика.
MAKE файл може да се напише и на ръка, а може да се генерира и с много допълнителни скриптове на езици, като PERL, който присъства по дефиниция в 99% от свободните ОС. Примерен МАКЕ генератор на Perl. Всъщност и wiki-то предлага достъпно описание за структурата на MAKE. И един туториал за ръчно ръчкане на MAKE.
редактиран от phrozencrew на 02.10.10 23:03
zlatena
Пон, 04.10.10, 15:54
Намерих интересен електронен учебник:
http://dfe3300.karelia.ru/koi/posob/X/index.html
Създаване на "прозорец" от нулата,без разни IDE-та.
Не знам дали някой програмира още по този начин,но е обяснено достъпно и интересно.
Изтеглих сорса на примера - example1,преместих го на десктопа в папка "test".
Добрах се през терминала до папката:
cd /home/z/Плот/test

...изпълних:
cc -o example1.out example1.c -lX11 -L/usr/X11R6/lib

В папка "test" получих изпълним файл example1.out,въпреки тези предупреждения.

След като го изпълних,получих това:

=============================================
Под Anjuta обаче не мога да изпълня програмата и да се визуализира прозореца.
Отначало не искаше да се компилира,но след инсталацията на libxmp-dev се оправи.
При опит да изпълня програмата ми изписва:
Program has been terminated receiving signal 11 (Segmentation fault)
Някой има ли идея,защо е така?

Избирам за тип на проекта това:
Избирам за тип на проекта това:

редактиран от zlatena на 04.10.10 15:54
редактиран от zlatena на 04.10.10 15:57
редактиран от zlatena на 04.10.10 16:13
boy4o
Пон, 04.10.10, 20:03
Факт е, че твърде малко съм писал под отворени системи и IDE, но ще си позволя да добавя още малко "художествени измислици и алабалистика".
 
Грешката "Segmentation fault" е специфична за една такава фамилия системи - UNIX/Linux. Получава се при опит за достъп от някоя програма до сегмент от паметта (при x86 архитектура, естествено), който вече се използва от друг процес, но това е обяснено на много места в Мрежата.
 
По интересно е как в случая се стига до тази грешка. Само предполагам, защото не успях да изровя от онзи сайт сорса на example1. В същност имам две предположения.
 
Едното е, че опитът за създаване на нов прозорец отправя заявка към мениджъра на паметта на ОС, която бива отказана и това се интерпретира като "Segmentation fault". Втората е, че генерираният изпълним код влиза в конфликт с използвания GUI.
 
Що се отнася до предупрежденията, издавани от компилатора по повод употребата на функцията "exit()", той просто е прекомерно добре възпитан: понеже употребата на "exit()" се смята за лош стил в С, гледа да го напомни всеки път, когато намери за добре.
 
И дотук... За да не давам нов повод на хора, които не разбират същината на проблема, да твърдят, че говоря "меко казано глупости".
zlatena
Пон, 04.10.10, 20:45
boy4o, повярвай ми,причината е в мен
Надали един linux developer изпитва подобни затруднения.
Най-вероятно неправилно боравя с IDE-то и машината е 64 bit с 64 bit опер.система...
Все пак учебника е от 2002-2003г, някъде там и примерите най вероятно са насочени за 32 bit опер.системи...
Ще пробвам и на 32 bit Linux
Ето ги и самите примери:
example1.c
example2.c
example3.c
example4.c
редактиран от zlatena на 04.10.10 20:45
boy4o
Пон, 04.10.10, 22:05
Моля те, не си приписвай излишна вина. Пие ли ти се виновност, ще ти наливат докато се удавиш. ( ) Вероятно бих могъл и сам да си намеря сорсовете, но ми се видя безсмислено да полагам усилия.
 
Истината е, че не изпитвам необходимия ентусиазъм към темата, след като предварително знам, че всичко което напиша ще бъде използвано за дребнави заяждания.

< 1 2 >

Коментар

за нас | за разработчици | за реклама | станете автори | in english  © 1998-2024   Experta Ltd.