ÑÞÕÃ’ëÕ àÞÑÞâë:
ÑÞÕÃ’ëÕ àÞÑÞâë:
ÑÞÕÃ’ëÕ àÞÑÞâë:
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