ProgUnixon

A VIK Wikiből
A lap korábbi változatát látod, amilyen Ferrero (vitalap | szerkesztései) 2013. január 29., 16:50-kor történt szerkesztése után volt. (→‎Vim)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

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

Prog2ShellScriptTutorial


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.