ProgUnixon
Ez az oldal a korábbi SCH wikiről lett áthozva.
Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor, kérlek, javíts rajta egy rövid szerkesztéssel!
Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót.
A hszk gépeiről be lehet jelentkezni grafikusan az ural2-re is (ez az alapértelmezett beállítás). A megjelenő loginablakban a szokásos témaszámot és jelszót kell megadni, általában angol billentyűkiosztás szerint!
Következzék néhány tanács.
Vim
Aki hatékonyan akar kódot szerkeszteni, mindenképpen tanulja meg a vim (esetleg emacs) használatát. Ebben segít az ural2-n is megtalálható vimtutor nevű bináris. (Van magyar fordítása is. Lásd hupwiki.)
Érdemes ismerni a :make, :cl, :cn parancsokat, amelyekkel make-elhetünk, hibalistát tekinthetünk meg, és azon ugrálhatunk.
Jelenleg friss vim van az ural2-n, ha esetleg elavulna, küldjetek egy mailt a hszk-nak, frissíteni fogják.
Az ural2-n lévő xterm nagyon régi, úgyhogy érdemes a gvim futtatása, ez jól színez xterminálon. Otthonról való használatra javasolt a terminál megfelelő beállítása (echo 'TERM=xterm-color' >> ~/.profile; source ~/.profile).
Ha mást nem is, egy "syntax on" és "filetype plugin indent on" sort érdemes beírni a "~/.vimrc"-be.
Lásd még: Prog2Vi
Makefile
Érdemes a legkisebb projektekhez is Makefile-t készíteni, ami egyszerűsíti a fordítás folyamatát.
Egy "Makefile" nevű fájlt kell az adott könyvtárban létrehozni, majd a make parancs lefordít mindent, ami frissült.
A különálló programokat érdemes külön könyvtárban tárolni. Egy forrásfájlból álló C programhoz egy Makefile így néz ki (fontos, hogy a tab ne szóközökből álljon, mert ez hibás működéshez vezet):
CFLAGS=-lm -g # gcc flagek: math modul linkelése, debug mód valami: valami.c # valami előállítása valami.c-ből (implicit szabályok szerint) clean: # "make clean" törli a szemetet rm -f valami *.o
(C++-hoz ugyanez, csak forrásfájl nevének a vége .cpp legyen.)
Több modulból álló program esetén valami ilyesmire lesz szükség (a {foo,bar,baz}.{h,c} fájlokból fordít):
CFLAGS=-lm -g OBJS=foo.o bar.o baz.o # default cél: tárgykód összeszerkesztése ./valami kimenettel valami: ${OBJS} ${CC} -o $@ ${CFLAGS} ${OBJS} clean: rm -f valami *.o foo.o: foo.c foo.h bar.h # függőségek, mindig a legelső a forrásfájl # nem kell konkrét parancs, kiterjesztésből tudja a make bar.o: bar.c bar.h # baz.o default marad
C++ fordítására a "g++" nevű program szolgál (ez van a CXX makróban), és az előző Makefile működik vele. (A g++ kapcsolóit a CXXFLAGS makró tárolja.)
gdb
Prog2-ből szerepel is az anyagban a gdb. Egyszerűen használható parancssoros debugger. "gdb ./programneve" paranccsal indítható. "r"-rel indítod a programot, ctrl-z-vel megszakítod, c-vel folytatod, s-sel lépkedsz, bt-vel megnézed az elszállt programod stackjét, b-vel breakpointot raksz le, q-val kilépsz. Üres sorra entert ütve az előző parancsot ismétled.
Uralon nincs (mivel Solarisra nem portolták), de érdemes még kipróbálni a valgrind-ot, megmutatja, hol szivárog a memória, vagy hol vétettél csúnya hibákat.
screen
Ha nem akarsz hat ablakot nyitva tartani, használd a screen-t. Alapból kicsit fapados, de remek leírásokat találni róla. Ural2-n SIGHUP-ra leáll a screen is.
Esetleg elég lehet a Ctrl-Z, fg, bg, jobs parancsok ismerete is.
apróságok
- Ha a PATH környezeti változóban nincs benne (echo 'PATH=$PATH:.' >> ~/.profile) a (mindenkori) aktuális könyvtár, ./bináris_neve módon futtathatod a programodat.
- Unix alatt ctrl-d a szokásos eof-vezérlőkarakter, ctrl-c az interrupt. (stty-vel variálható).
- ~/.profile-ba érdemes rakni egy "export PS1"-et, hogy a subshellekben is legyen szép prompt
- szintén ~/.profileban érdemes a preferált szerkesztőt is megemlíteni ("EDITOR=vim")
- billentyűkiosztás váltása
Függvényreferencia
Az ural2-n telepítve van, Ubuntu és Debian alatt pedig például a manpages-dev csomag tartalmazza a glibc (GNU C Library) dokumentációját. Így például a "man -s 3c printf" (ural2-n) vagy "man 3 printf" (Linuxon) paranccsal elérjük a printf függvénycsalád leírását.
szkriptek
Lásd még
Kápolnai Richárd bevezetője hasonló témában, emacs-finomságokkal, gdb-leírással
-- maat - 2009.05.28.