А.В. Столяров - Операционная среда ОС UNIX для изучающих программирование (1114675), страница 7
Текст из файла (страница 7)
 âàøåé ñèñòåìå ìîãóò áûòü óñòàíîâëåíû, êðîìå twm, òàêèå îêîííûå ìåíåäæåðû, êàê fvwm, icewm, wmakerè äðóãèå; êðîìå òîãî, âû ìîæåòå îáíàðóæèòü è áîëåå ðàçâèòûå ÎÌ, òàêèå êàê KDE è GNOME10 . ×òîáû âîñïîëüçîâàòüñÿ icewm, èçìåíèòå âàø.xinitrc:xterm &icewmÅñëè âû ïðåäïî÷èòàåòå KDE, âàø ôàéë ìîæåò âûãëÿäåòü òàê:xterm &startkdeÂûáîð êîíêðåòíîãî îêîííîãî ìåíåäæåðà ñðåäè ìíîæåñòâà äîñòóïíûõ çàâèñèò â îñíîâíîì îò âàøèõ ëè÷íûõ ïðåäïî÷òåíèé. Òàê, ñòàíäàðòíûé ÎÌ twm âûãëÿäèò äîñòàòî÷íî àñêåòè÷íî, òîãäà êàê KDE ïî âû÷óðíîñòè ñâîåãî ãðàôè÷åñêîãî äèçàéíà, ïîæàëóé, ïðåâîñõîäèò ñèñòåìû ñåìåéñòâà Windows.  òî æå âðåìÿ KDE âåñüìà òðåáîâàòåëåí ê ðåñóðñàìè îùóòèìî òîðìîçèò äàæå íà ñðàâíèòåëüíî áûñòðûõ êîìïüþòåðàõ,òîãäà êàê àñêåòè÷íûå twm, fvwm è äàæå äîñòàòî÷íî ðàçâèòûé â äèçàéíåðñêîì îòíîøåíèè icewm ðàáîòàþò ñ ïðèåìëåìîé ñêîðîñòüþ äàæå íàêîìïüþòåðàõ ñ ïðîöåññîðàìè Pentium-1 (KDE íà òàêèõ ìàøèíàõ ëó÷øåè íå ïðîáîâàòü çàïóñêàòü).Îòìåòèì, ÷òî KDE ïðåäíàçíà÷åí â îñíîâíîì äëÿ ïîëüçîâàòåëåé, íåóìåþùèõ è íå æåëàþùèõ ðàáîòàòü â êîìàíäíîé ñòðîêå.
Ïðîôåññèîíàëüíûå ïðîãðàììèñòû è ñèñòåìíûå àäìèíèñòðàòîðû îáû÷íî ïðåäïî÷èòàþòîêîííûå ìåíåäæåðû ïîïðîùå.9 Íàäî ñêàçàòü, ÷òî twm â ñèñòåìå ïðèñóòñòâóåò ïðàêòè÷åñêè âñåãäà, ÷åãî î äðóãèõîêîííûõìåíåäæåðàõ íå ñêàæåøü10 Âñåãî ñóùåñòâóåò íåñêîëüêî äåñÿòêîâ îêîííûõ ìåíåäæåðîâ, òàê ÷òî ïðèâåäåííûéñïèñîê íå ìîæåò ïðåòåíäîâàòü íà ïîëíîòó31 3.3. Ðàáîòà ñ êëàññè÷åñêèìè îêîííûìè ìåíåäæåðàìèÊ êëàññè÷åñêèì ÎÌ ìû îòíîñèì twm, fvwm è íåêîòîðûå äðóãèå.Ñëåäóåò îòìåòèòü, ÷òî ëþáîé îêîííûé ìåíåäæåð èìååò âåñüìà ðàçâèòûå ñðåäñòâà íàñòðîéêè, ïîçâîëÿþùèå ñóùåñòâåííî èçìåíèòü åãî ïîâåäåíèå, òàê ÷òî äàòü èñ÷åðïûâàþùóþ èíñòðóêöèþ ïî ðàáîòå ñ êàêèìëèáî èç îêîííûõ ìåíåäæåðîâ íà óðîâíå íàæìèòå òàêóþ-òî êëàâèøóäëÿ ïîëó÷åíèÿ òàêîãî-òî ðåçóëüòàòà áûëî áû çàòðóäíèòåëüíî.
 ýòîìïàðàãðàôå ìû îãðàíè÷èìñÿ îáùèìè ðåêîìåíäàöèÿìè, êîòîðûå ïîçâîëÿò âàì áûñòðî îñâîèòü ðàáîòó ñ âàøèì îêîííûì ìåíåäæåðîì â òîéêîíôèãóðàöèè, êîòîðàÿ óñòàíîâëåíà â âàøåé ñèñòåìå. Ïðè æåëàíèè âûìîæåòå èçìåíèòü ëþáûå íàñòðîéêè îêîííîãî ìåíåäæåðà; çà èíñòðóêöèÿìè ïî ýòîìó ïîâîäó ñëåäóåò îáðàòèòüñÿ ê òåõíè÷åñêîé äîêóìåíòàöèè.Èòàê, ïåðâîå, ÷òî ìîæíî ïîñîâåòîâàòü ïîñëå çàïóñêà îêîííîãî ìåíåäæåðà ýòî ïîïûòàòüñÿ ïîíÿòü, êàêèì îáðàçîì â íåì âûñâåòèòü ãëàâíîåìåíþ. Âî âñåõ êëàññè÷åñêèõ ÎÌ ãëàâíîå ìåíþ âûäàåòñÿ, åñëè ùåëêíóòüëåâîé êíîïêîé ìûøè â ëþáîì ñâîáîäíîì ìåñòå ýêðàíà (òî åñòü âòàêîì ìåñòå, êîòîðîå íå çàêðûòî íèêàêèìè îêíàìè). Îòìåòèì, ÷òî âêëàññè÷åñêèõ ÎÌ íå ïîääåðæèâàåòñÿ íè÷åãî ïîõîæåãî íà ïèêòîãðàììû íà ðàáî÷åì ñòîëå, òàê ÷òî çàïóñê ïðîãðàìì ìîæíî îñóùåñòâèòüëèáî ÷åðåç ìåíþ, ëèáî ñ ïîìîùüþ êîìàíäíîé ñòðîêè, äîñòóï ê êîòîðîéìîæíî ïîëó÷èòü, çàïóñòèâ ïðîãðàììó xterm èëè àíàëîãè÷íóþ. Îáû÷íî xterm èëè êàêîé-òî åãî àíàëîã èìååòñÿ ëèáî â ñàìîì ãëàâíîì ìåíþ,ëèáî â åãî ïîäìåíþ, íàçûâàåìîì terminals, shells è ò.ï.
Åñëè ó âàñóæå åñòü îäíî îêîøêî ñ êîìàíäíîé ñòðîêîé, ìîæíî çàïóñòèòü íîâûéýêçåìïëÿð xterm, äàâ êîìàíäó$ xterm &Îáðàòèòå âíèìàíèå íà ñèìâîë &. Ïðîãðàììó xterm ìû çàïóñêàåì â ôîíîâîì ðåæèìå, ÷òîáû ñòàðûé ýêçåìïëÿð xterm (ñ ïîìîùüþ êîòîðîãîìû äàåì êîìàíäó) íå æäàë åãî çàâåðøåíèÿ: â ïðîòèâíîì ñëó÷àå çàïóñêíîâîãî xterm òåðÿåò ñìûñë, âåäü ó íàñ âî âðåìÿ åãî ðàáîòû íå áóäåòâîçìîæíîñòè ïîëüçîâàòüñÿ ñòàðûì ýêçåìïëÿðîì.Ïðîãðàììà xterm èìååò ðàçâèòóþ ñèñòåìó îïöèé. Íàïðèìåð,$ xterm -bg black -fg gray &çàïóñòèò ýìóëÿòîð òåðìèíàëà íà ÷åðíîì ôîíå ñ ñåðûìè áóêâàìè (òîòæå íàáîð öâåòîâ îáû÷íî èñïîëüçóåòñÿ â òåêñòîâîé êîíñîëè).Êëàññè÷åñêèì â ñèñòåìå X Window ñ÷èòàåòñÿ ïîâåäåíèå, ïðè êîòîðîì ôîêóñ ââîäà íàõîäèòñÿ â òîì îêíå, íà êîòîðîì â íàñòîÿùèé32ìîìåíò íàõîäèòñÿ êóðñîð ìûøè11 .
Òàêîå ñîãëàøåíèå ïîçâîëÿåò, íàïðèìåð, ðàáîòàòü ñ îêíîì, êîòîðîå ÷àñòè÷íî ñêðûòî äðóãèìè îêíàìè, íå âûòàñêèâàÿ åãî íà âåðõíèé óðîâåíü. Òàêîå ïîâåäåíèå (èìåíóåìîå FocusFollowsMouse), îäíàêî, ìîæåò îêàçàòüñÿ íåïðèâû÷íûì; ïðèíåîáõîäèìîñòè åãî ìîæíî ñìåíèòü íà áîëåå ïðèâû÷íîå, íàçûâàåìîåClickToFocus, ñ ïîìîùüþ íàñòðîåê âàøåãî îêîííîãî ìåíåäæåðà.
 ëþáîì ñëó÷àå, ñëåäèòå âíèìàòåëüíî çà ïîëîæåíèåì êóðñîðà ìûøè.Ïîêàçàòü ïîëíîñòüþ (ïîäíÿòü íà âåðõíèé óðîâåíü) îêíî, êîòîðîå ÷àñòè÷íî ñêðûòî, ìîæíî, ùåëêíóâ ìûøüþ ïî åãî çàãîëîâêó (à íå ïîëþáîìó ìåñòó îêíà). Âàøè íàñòðîéêè ìîãóò ïðåäóñìàòðèâàòü è îáðàòíóþ îïåðàöèþ (óòîïèòü îêíî, ïîêàçàâ òî, ÷òî ïîä íèì) îáû÷íî ýòîäåëàåòñÿ ùåë÷êîì ïðàâîé êíîïêè ìûøè ïî çàãîëîâêó. Äëÿ ïåðåìåùåíèÿ îêíà ïî ýêðàíó òàêæå ñëóæèò åãî çàãîëîâîê: äîñòàòî÷íî íàâåñòèíà çàãîëîâîê êóðñîð ìûøè, íàæàòü (è íå îòïóñêàòü) ëåâóþ êíîïêó, âûáðàòü íîâîå ïîëîæåíèå îêíà è îòïóñòèòü êíîïêó.
Åñëè çàãîëîâêà îêíàíå âèäíî (íàïðèìåð, îí ñêðûò ïîä äðóãèìè îêíàìè), òó æå îïåðàöèþìîæíî ïðîäåëàòü ñ ïîìîùüþ âåðòèêàëüíûõ è ãîðèçîíòàëüíûõ ÷àñòåéðàìêè îêíà, êðîìå âûäåëåííûõ ó÷àñòêîâ â óãîëêàõ ðàìêè; ýòè óãëîâûåó÷àñòêè ñëóæàò äëÿ èçìåíåíèÿ ðàçìåðîâ îêíà, òî åñòü ïðè ïðîòÿãèâàíèè èõ ìûøêîé ïåðåìåùàåòñÿ íå âñ¼ îêíî, à òîëüêî òîò åãî óãîëîê,êîòîðûé âû çàõâàòèëè.Åñëè âû ïîòåðÿëè íóæíîå âàì îêíî, îáû÷íî åãî ìîæíî ëåãêî îòûñêàòü, ùåëêíóâ ïðàâîé êíîïêîé ìûøè â ñâîáîäíîì ìåñòå ýêðàíà.
Îáû÷íî ïðè ýòîì âûäàåòñÿ ìåíþ, ñîñòîÿùåå èç ñïèñêà ñóùåñòâóþùèõ îêîí. áîëüøèíñòâå ñëó÷àåâ îêîííûå ìåíåäæåðû ïîääåðæèâàþò òàê íàçûâàåìûé âèðòóàëüíûé ðàáî÷èé ñòîë (virtual desktop), ñîñòîÿùèé èçíåñêîëüêèõ âèðòóàëüíûõ ýêðàíîâ, íà êàæäîì èç êîòîðûõ ìîæíî ðàçìåñòèòü ñâîè îêíà. Ýòî áûâàåò óäîáíî, åñëè âû ðàáîòàåòå îäíîâðåìåííîñ áîëüøèì êîëè÷åñòâîì îêîí. Êàðòà âèðòóàëüíîãî ðàáî÷åãî ñòîëà, íàêîòîðîé èçîáðàæåíû âèðòóàëüíûå ýêðàíû, îáû÷íî íàõîäèòñÿ â ïðàâîìíèæíåì óãëó ýêðàíà; ÷òîáû ïåðåêëþ÷èòüñÿ íà íóæíûé âàì âèðòóàëüíûé ýêðàí, äîñòàòî÷íî ùåëêíóòü ìûøüþ â ñîîòâåòñòâóþùåì ìåñòå êàðòû.Èç îêîí, â êîòîðûõ îòîáðàæàåòñÿ íåêèé òåêñò, îáû÷íî ìîæíî ñêîïèðîâàòü ýòîò òåêñò â äðóãèå îêíà. Äëÿ ýòîãî äîñòàòî÷íî âûäåëèòüòåêñò ìûøüþ; â áîëüøèíñòâå ïðîãðàìì, ðàáîòàþùèõ ïîä óïðàâëåíèåì X Window, íåò ñïåöèàëüíîé îïåðàöèè copy: êîïèðóåòñÿ ðîâíî òîò11 Ýòî îòëè÷àåòñÿ îò ïîâåäåíèÿ â Windows, ãäå äëÿ ïåðåìåùåíèÿ ôîêóñà ââîäàíåîáõîäèìî âûáðàòü îêíî, ùåëêíóâ ïî íåìó ìûøêîé, ïðè ýòîì îêíî îáÿçàòåëüíîïîêàçûâàåòñÿ ïîëíîñòüþ33òåêñò, êîòîðûé âûäåëåí.Âñòàâêà âûäåëåííîãî òåêñòà îñóùåñòâëÿåòñÿ òðåòüåé (ñðåäíåé)êíîïêîé ìûøè.
Åñëè íà âàøåé ìûøêå òîëüêî äâå êíîïêè, îáû÷íî ñèñòåìà íàñòðàèâàåòñÿ íà èìèòàöèþ òðåòüåé êíîïêè ïóòåì íàæàòèÿ îäíîâðåìåííî ïðàâîé è ëåâîé êíîïîê. Åñëè æå âàøà ìûøü îñíàùåíà êîëåñîì äëÿ ñêðîëëèíãà, îáðàòèòå âíèìàíèå íà òî, ÷òî îáû÷íî íà ýòîêîëåñî ìîæíî íàæàòü ñâåðõó âíèç, íå ïðîêðó÷èâàÿ åãî; â ýòîé ñèòóàöèèêîëåñî ðàáîòàåò êàê îáû÷íàÿ (òðåòüÿ) êíîïêà, ÷òî âàì, ñîáñòâåííî, èòðåáóåòñÿ.34 4. Èíñòðóìåíòàðèé ïðîãðàììèñòà 4.1.
Êîìïèëÿòîð gcc/g++Êîìïèëÿòîðû ñåìåéñòâà GCC (Gnu Compiler Collection) ÿâëÿþòñÿêîìïèëÿòîðàìè êîìàíäíîé ñòðîêè, ò.å. âñå íåîáõîäèìûå äåéñòâèÿ çàäàþòñÿ ïðè çàïóñêå êîìïèëÿòîðà è âûïîëíÿþòñÿ óæå áåç íåïîñðåäñòâåííîãî ó÷àñòèÿ ïîëüçîâàòåëÿ. Ýòî, â ÷àñòíîñòè, ïîçâîëÿåò èñïîëüçîâàòüêîìïèëÿòîð â êîìàíäíûõ ôàéëàõ (ñêðèïòàõ).Êîìàíäà gcc ïðåäíàçíà÷åíà äëÿ êîìïèëÿöèè ïðîãðàìì íà ÿçûêå C,à êîìàíäà g++ íà ÿçûêå C++12 .Èìåíà ôàéëîâ, ïîäëåæàùèõ êîìïèëÿöèè è ëèíêîâêå, êîìïèëÿòîðïðèíèìàåò ñ êîìàíäíîé ñòðîêè. Êðîìå òîãî, êîìïèëÿòîð âîñïðèíèìàåòáîëüøîå êîëè÷åñòâî îïöèé. Âàì îáÿçàòåëüíî ïîíàäîáÿòñÿ ñëåäóþùèåèç íèõ:• -o <lename> çàäàåò èìÿ èñïîëíÿåìîãî ôàéëà, â êîòîðûé áóäåòçàïèñàí ðåçóëüòàò êîìïèëÿöèè (åñëè íå óêàçàòü ýòó îïöèþ, ðåçóëüòàò êîìïèëÿöèè áóäåò ïîìåùåí â ôàéë a.out.);• -Wall ïðèêàçûâàåò êîìïèëÿòîðó âûäàâàòü âñå ðàçóìíûå ïðåäóïðåäèòåëüíûå ñîîáùåíèÿ (warnings). Îáÿçàòåëüíî âñåãäà èñïîëüçóéòå ýòó îïöèþ, îíà ïîìîæåò âàì ñýêîíîìèòü íåìàëî âðåìåíè è íåðâîâ;• -ggdb è -g èñïîëüçóþòñÿ äëÿ âêëþ÷åíèÿ â ðåçóëüòèðóþùèå ôàéëûðàçíîîáðàçíîé îòëàäî÷íîé èíôîðìàöèè (èíôîðìàöèè, èñïîëüçóåìîé îòëàä÷èêîì, âêëþ÷àÿ èìåíà ïåðåìåííûõ è ôóíêöèé, íîìåðàñòðîê èñõîäíûõ ôàéëîâ è ò.ï.).
Îïöèÿ -ggdb ñíàáæàåò ôàéëû ðàñøèðåííîé îòëàäî÷íîé èíôîðìàöèåé, ïîíÿòíîé òîëüêî îòëàä÷èêógdb. Åñëè âàì êàæåòñÿ, ÷òî ÷òî-òî íå â ïîðÿäêå ñ îòëàä÷èêîì,ïîïðîáóéòå èñïîëüçîâàòü îïöèþ -g;• -c óêàçûâàåò êîìïèëÿòîðó, ÷òî ðåçóëüòàòîì äîëæíà áûòü íå âñÿïðîãðàììà, à îòäåëüíûé åå ìîäóëü.  ýòîì ñëó÷àå èìÿ ôàéëà äëÿîáúåêòíîãî ìîäóëÿ ìîæíî íå çàäàâàòü, îíî áóäåò ñãåíåðèðîâàíîàâòîìàòè÷åñêè çàìåíîé ðàñøèðåíèÿ íà .o;12 Íà ñàìîì äåëå, èñïîëüçóåòñÿ îäèí è òîò æå êîìïèëÿòîð; îáà èìåíè ÿâëÿþòñÿîáû÷íî ñèìâîëè÷åñêèìè ññûëêàìè íà èñïîëíÿåìûé ôàéë êîìïèëÿòîðà.
Ïîâåäåíèåêîìïèëÿòîðà çàâèñèò îò òîãî, ïî êàêîìó èìåíè åãî âûçâàëè; ïðåæäå âñåãî, ðàçëè÷èåâûðàæàåòñÿ â íàáîðå ñòàíäàðòíûõ áèáëèîòåê, ïîäêëþ÷àåìûõ ïî óìîë÷àíèþ ïðèñáîðêå èñïîëíÿåìîãî ôàéëà.35• -On çàäàåò óðîâåíü îïòèìèçàöèè. n=0 îçíà÷àåò îòñóòñòâèå îïòèìèçàöèè (çíà÷åíèå ïî óìîë÷àíèþ). Äëÿ ïîëó÷åíèÿ áîëåå ýôôåêòèâíîãî îáúåêòíîãî êîäà ðåêîìåíäóåòñÿ èñïîëüçîâàòü îïöèþ -O2.Ó÷òèòå, ÷òî îïòèìèçàöèÿ ìîæåò çàòðóäíèòü ðàáîòó ñ îòëàä÷èêîì;• -ansi ïðèêàçûâàåò êîìïèëÿòîðó ðàáîòàòü â ñîîòâåòñòâèè ñî ñòàíäàðòîì ANSI C;• -pedantic çàñòàâëÿåò êîìïèëÿòîð ñòðîæå îòíîñèòüñÿ ê ñîáëþäåíèþ ñòàíäàðòà;• -E îñòàíàâëèâàåò êîìïèëÿòîð ïîñëå ïðîâåäåíèÿ ñòàäèè ìàêðîïðîöåññèðîâàíèÿ.
Ðåóëüòàò ìàêðîïðîöåññèðîâàíèÿ âûäàåòñÿ íà ñòàíäàðòíûé âûâîä. Ýòà îïöèÿ ìîæåò áûòü ïîëåçíà, åñëè âàøè ìàêðîîïðåäåëåíèÿ ïîâåëè ñåáÿ íå òàê, êàê âû îæèäàëè, è õî÷åòñÿ ïîíÿòü, ÷òî íà ñàìîì äåëå ïðîèñõîäèò;• -D ïîçâîëÿåò ñ êîìàíäíîé ñòðîêè (ò.å. áåç èçìåíåíèÿ èñõîäíûõôàéëîâ) îïðåäåëèòü â ïðîãðàììå íåêèé ìàêðîñèìâîë. Ýòî ïîëåçíî, åñëè â âàøåé ïðîãðàììå èñïîëüçóþòñÿ äèðåêòèâû óñëîâíîé êîìïèëÿöèè è òðåáóåòñÿ, íå èçìåíÿÿ èñõîäíûõ ôàéëîâ, áûñòðî îòêîìïèëèðîâàòü àëüòåðíàòèâíóþ âåðñèþ ïðîãðàììû. Íàïðèìåð, -DDEBUG=2 èìååò òàêîé æå ýôôåêò, êàêîé äàëà áû äèðåêòèâà#define DEBUG 2 â íà÷àëå èñõîäíîãî ôàéëà.• -l ïîçâîëÿåò ïîäêëþ÷èòü ê ïðîãðàììå áèáëèîòåêó ôóíêöèé. Òàê,åñëè â âàøåé ïðîãðàììå èñïîëüçóþòñÿ ìàòåìàòè÷åñêèå ôóíêöèè (sin, exp è äðóãèå), íåîáõîäèìî ïðè êîìïèëÿöèè çàäàòüêëþ÷ -lmath; â íåêîòîðûõ âàðèàíòàõ ÎÑ Unix (íàïðèìåð, âSunOS/Solaris) ïðè èñïîëüçîâàíèè ñîêåòîâ âàì ïîíàäîáèòñÿ òàêæåêëþ÷ -lnsl;• -MM àíàëèçèðóåò çàäàííûå èñõîäíûå ôàéëû è ñòðîèò èíôîðìàöèþîá èõ âçàèìîçàâèñèìîñòÿõ.