12.04.2014 Views

БОЕВЫЕ РОБОТЫ:

БОЕВЫЕ РОБОТЫ:

БОЕВЫЕ РОБОТЫ:

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Äëÿ óñïåøíîé ñáîðêè ïðîãðàììû ñ GTK-èíòåðôåéñîì,<br />

èñïîëüçóþùåé OpenGL, êîìïèëÿòîð ñëåäóåò îçàäà÷èòü<br />

ñëåäóþùèìè äîïîëíèòåëüíûìè àðãóìåíòàìè:<br />

$ gcc -O2 -Wall `gtk-config --cflags --libs` -lGL -lGLU -<br />

lgtkgl progac -o proga<br />

À ÷òîáû èñïîëüçîâàòü âîçìîæíîñòè áèáëèîòåêè SDL:<br />

$ gcc -O2 -Wall `sdl-config --cflags --libs` progac -o<br />

proga<br />

Äëÿ îïòèìèçàöèè èñïîëíÿåìîãî êîäà ìîæíî ïîïðîáîâàòü<br />

çàìåíèòü ïàðàìåòð '-O2'<br />

íà '-O3 -funroll-all-loops -fomit-frame-pointer -ffast-math<br />

-march=i686 -mcpu=i686'<br />

×òîáû óçíàòü, ñêîëüêî âðåìåíè çàíÿë ïðîöåññ êîìïèëÿöèè,<br />

ìîæíî âîñïîëüçîâàòüñÿ óòèëèòîé time:<br />

$ time /bin/sh -c "gcc êó÷à_ôëàæêîâ_è_îïöèé progac -o<br />

proga"<br />

Ïèíãâèíîîáóñòðîéñòâî<br />

Ïðåæäå, ÷åì ãîíÿòü èãðóøêè, ñëåäóåò óáåäèòüñÿ, ÷òî â<br />

ñèñòåìå ïðèñóòñòâóþò ñëåäóþùèå êîìïîíåíòû: íîðìàëüíûé<br />

êîìïèëÿòîð, ñïîñîáíûé ñîáðàòü ÷òî-òî ïîñåðüåçíåå<br />

ïðîãè òèïà "Hello, world!" (ïîä íîðìàëüíûì ÿ ïîäðàçóìåâàþ<br />

ïðîïàò÷åííûé gcc âåðñèè 2953, ëèáî cvs'íóòûé gcc âåòêè<br />

295 - ýòî îêðåùåííàÿ ðàçðàáîò÷èêàìè FreeBSD âåðñèÿ<br />

2954, ëèáî gcc âåðñèè 32, êîòîðóþ ðåêîìåíäóþ<br />

äëÿ ïîëó÷åíèÿ äîïîëíèòåëüíîé îïòèìèçàöèè â èñïîëíÿåìîì<br />

êîäå ñ÷àñòëèâûì îáëàäàòåëÿì ïîñëåäíèõ ïíåé è àòëîíîâ),<br />

glibc 223 è âûøå, ñðåäñòâà ðàçðàáîòêè, X-<br />

Window âåðñèè 403 è âûøå Òàêæå äëÿ óñïåøíîé ñáîðêè<br />

ãàìåñîâ òåáå ïîíàäîáÿòñÿ ñïåöèàëüíûå áèáëèîòåêè, ñî<br />

ñïèñêîì êîòîðûõ ìîæåøü îçíàêîìèòüñÿ íà âðåçêå<br />

Êîìïèëåð êîìïèëåðó ðîçíü<br />

×àñòåíüêî â ôàéëàõ README èëè INSTALL ðàçëè÷íûõ ïðîãðàìì<br />

è èãð âñòðå÷àåòñÿ íàñòîé÷èâîå òðåáîâàíèå ðàçðàáîò÷èêîâ<br />

îáíîâèòü êîìïèëÿòîð èëè ñäåëàòü åìó downgrade<br />

Îòíîñèòñÿ ýòî ê íè â ÷åì íå ïîâèííûì çàâîä÷èêàì<br />

êðàñíûõ øëÿïîê,<br />

íà ñëåçàõ è ñèíÿêàõ êîòîðûõ äåâåëîïåðû èç Red Hat ïðîñòî-íàïðîñòî<br />

ðåøèëè îáêàòàòü ñâîþ âåðñèþ êîìïèëÿòîðà<br />

gcc Õîòÿ ñåé÷àñ ñ ïîëíîé óâåðåííîñòüþ ìîæíî ñêàçàòü,<br />

÷òî èì ýòîò òðþê óäàëñÿ, è â äèñòðèáå Red Hat Linux 73<br />

ìû ïîëó÷èëè<br />

äåéñòâèòåëüíî íåïëîõîé êîìïèëåð Óçíàòü âåðñèþ gcc<br />

ìîæíî ñëåäóþùèì îáðàçîì:<br />

$ gcc -v<br />

Åñëè â îòâåò ïîëó÷èøü 296 è ïîä-âåðñèÿ êîìïèëÿòîðà<br />

áóäåò ìåíüøå 100, òî ñëåäóþùèå íåñêîëüêî àáçàöåâ<br />

ñïåöèàëüíî äëÿ òåáÿ :) ×òîáû îñòàëüíûì òóêñ ìàëèíîé<br />

íå êàçàëñÿ, ðàññìîòðèì ïðèìåð óñòàíîâêè êîìïèëÿòîðà<br />

gcc âåðñèè 32<br />

(ïîñëåäíåé íà ìîìåíò íàïèñàíèÿ ñòàòüè) Èíñòàëëÿöèþ<br />

êîìïèëåðà ñòàíäàðòíîé ïðîöåäóðîé íå íàçîâåøü: ñíà÷àëà<br />

íóæíî ðàñïàêîâàòü àðõèâ, ïåðåéòè â ñîçäàííûé êàòàëîã,<br />

ñîçäàòü âðåìåííóþ äèðåêòîðèþ è èç íåå çàïóñòèòü<br />

ñêðèïò configure ñ íåîáõîäèìûìè àðãóìåíòàìè, çàòåì<br />

÷åðåç ïåðåìåííûå îêðóæåíèÿ óêàçàòü äîïîëíèòåëüíûå<br />

ôëàæêè äëÿ êîìïèëÿöèè, ñîáðàòü è ïîñòàâèòü:<br />

# tar zxvf gcc-32targz<br />

# cd gcc-32<br />

# mkdir obj<br />

# cd obj<br />

# /configure --prefix=/usr/local/gcc --program-suffix=-32<br />

--enable-languages=c,c++,java,objc<br />

# make CFLAGS='-O' LIBCFLAGS='-O2' LIBCXXFLAGS='-<br />

O2 -fno-implicit-templates' bootstrap<br />

# make install<br />

Çàòåì â ôàéë /etc/ldsoconf íåîáõîäèìî äîáàâèòü ïóòü ê<br />

ëèáàì íîâîãî êîìïèëåðà è äàòü ïðîãðàììå ldconfig ïåðå-<br />

÷èòàòü ñâîé êîíôèã:<br />

# echo "/usr/local/gcc/lib" >> /etc/ldsoconf<br />

# ldconfig<br />

Òåïåðü, ÷òîáû âîñïîëüçîâàòüñÿ ñâåæåóñòàíîâëåííûì<br />

êîìïèëÿòîðîì, íóæíî ëèáî ïîíàäåëàòü ñèìëèíêîâ, ëèáî<br />

ïåðåä êîìïèëÿöèåé êàêîé-íèáóäü êàïðèçíîé ïðîãðàììû<br />

(äðóæíî âñïîìèíàåì Mplayer :) èçìåíèòü ïåðåìåííûå îêðóæåíèÿ:<br />

# export CC=/usr/local/gcc/bin/gcc-32<br />

# export CXX=/usr/local/gcc/bin/g++-32<br />

Ýêñêóðñèÿ ïî áèáëèîòåêàì<br />

Âñå, ñ êîìïèëåðîì ðàçîáðàëèñü Òåïåðü ïåðåéäåì ê óñòàíîâêå<br />

SDL (wwwlibsdlorg) è ñâÿçàííûõ ñ íåé áèáëèîòåê<br />

Çäåñü ðåêîìåíäóþ äåéñòâîâàòü ñìåëî è â òàêîé ïîñëåäîâàòåëüíîñòè:<br />

1) Ñòàâèì ñàìó áèáëèîòåêó SDL:<br />

$ tar zxvf SDL-124targz<br />

$ cd SDL-124<br />

$ /configure --disable-openbsdaudio<br />

$ make<br />

# make install<br />

2) Óñòàíàâëèâàåì àðõèíóæíóþ äëÿ SDL_mixer áèáëèîòåêó<br />

smpeg (wwwlokigamescom/development/smpegphp3) ñ<br />

àðãóìåíòîì --enable-mmx<br />

×òîáû ëèøíèé ðàç íå ïîâòîðÿòüñÿ, ïðîöåññ ðàçàðõèâèðîâàíèÿ<br />

è make && make install çäåñü è äàëåå îïèñûâàòü íå áóäó<br />

3) Òåïåðü íà òâîåì âèíòå äîëæíà ïîÿâèòüñÿ ñàìà áèáëèîòåêà<br />

SDL_mixer<br />

(wwwlibsdlorg/projects/SDL_mixer/indexhtml), îíà íåîáõîäèìà<br />

äëÿ ìèêøèðîâàíèÿ çâóêà<br />

4) Ñëåäóþùèì ïàöèåíòîì áóäåò ëèáà äëÿ ðàáîòû ñ ñåòüþ<br />

SDL_net (wwwlibsdlorg/projects/SDL_net/indexhtml), êîíôèãóðèðóé<br />

ñ ïàðàìåòðîì --disable-gui<br />

5) È, íàêîíåö, áèáëèîòåêà SDL_image<br />

(wwwlibsdlorg/projects/SDL_image/indexhtml) äëÿ ðàáîòû<br />

ñ ãðàôè÷åñêèìè ôîðìàòàìè PPM, PCX, GIF, JPEG, PNG,<br />

TGA è TIFF (ñàìà SDL óìååò ðàáîòàòü òîëüêî ñ ôîðìàòîì<br />

BMP), ïðè óñòàíîâêå ñêðèïò configure íóæíî îçàäà÷èòü<br />

òàêèìè àðãóìåíòàìè: --enable-tif --enable-xcf<br />

Îòêóäà äðîâèøêè?<br />

Èç êåðíåëà âåñòèìî…<br />

Êàê è â ìèðå âèíäû, çäåñü áåç äðàéâåðîâ íèêóäà Î íèõ<br />

è ïîãîâîðèì Ðàññìîòðèì ïðîöåññ óñòàíîâêè äðàéâåðîâ<br />

íà ïðèìåðå âèäåîêàðò ñ ÷èïñåòîì Nvidia, òê ýòè âèäþõè<br />

èìåþò ïðèâëåêàòåëüíîå ñîîòíîøåíèå öåíà/êà÷åñòâî è<br />

ñåé÷àñ äîâîëüíî<br />

ïîïóëÿðíû:<br />

$ tar xvzf NVIDIA_kernel-10-3123targz<br />

$ cd NVIDIA_kernel-10-3123<br />

# make install<br />

$ tar xvzf NVIDIA_GLX-10-3123targz<br />

$ cd NVIDIA_GLX-10-3123<br />

# make install<br />

Ïðèìå÷àíèå: äðàéâåðà äîëæíû áûòü ñêîìïèëèðîâàíû<br />

òîé æå âåðñèåé êîìïèëåðà, ÷òî è ÿäðî Òåïåðü â<br />

ñåêöèè "Device" ôàéëà /etc/X11/XF86Config, ãäå ñî-<br />

Áèáëèîòåêà äëÿ ðàáîòû ñ ãðàôè÷åñêèì ôîðìàòîì<br />

PNG: Libpng wwwlibpngorg/pub/png/libpnghtml<br />

Áèáëèîòåêà äëÿ ñæàòèÿ äàííûõ: Zlib wwwgziporg/zlib/<br />

Áèáëèîòåêà äëÿ ñîçäàíèÿ èãð: Plib http://plibsfnet<br />

Ðåàëèçàöèÿ ñïåöèôèêàöèè OpenGL îò ãðóïïû íåçàâèñèìûõ<br />

ðàçðàáîò÷èêîâ: Mesa3d wwwmesa3dorg<br />

Íàáîð äîïîëíåíèé äëÿ OpenGL: Glut<br />

wwwopenglorg/developers/documentation/glut/indexht<br />

ml<br />

Íåêîììåð÷åñêàÿ ðåàëèçàöèÿ Glut: FreeGlut http://freeglutsfnet<br />

Íèçêîóðîâíåâàÿ áèáëèîòåêà Hermes äëÿ ðàáîòû ñ 3Dãðàôèêîé<br />

wwwclanliborg/hermes/<br />

Èíòåðôåéñ äëÿ ðàáîòû ñ òðåõìåðíûì çâóêîì OpenAL<br />

wwwopenalorg/<br />

5 6 7 8 9<br />

Þíèêñîèä X-Ñòèëü Êîäèíã Þíèòû Quit> 79

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!