2004.9.14

бѥ顧GCC


ǥ쥯ȥ깽


"user" "bin"        Хʥե
       "include"    إåե
                    "share"  ͥ롦桼ץξȤإåե
                    "sys"    إåե
       "common"     桼ץඦ̥롼
       "libc"       Standard C 饤֥
       "posix"      POSIX¾Υƥॳ饤֥
       "net"        Network Socketƥॳ饤֥
       "shell"      shellץ
       "command"    Ƽ拾ޥɥץ
       "test"       ƥѳƼץ
       "nettest"    ͥåȥƥѳƼץ
       makeե롢󥫡ץȡƥ


ץκ


OSεư塢ǥեȤǺǽ˥롼ȥǥ쥯ȥshellե¹ԤΤǡޤϥץ
Ƥ

()饤֥Υѥ

user/commonǥ쥯ȥ˰ươmakeץޥɤǥѥ뤹ȡȥǥ쥯ȥˡ
桼ץѶ̥롼common.oפ롣

user/libcǥ쥯ȥ˰ươmakeץޥɤǥѥ뤹ȡȥǥ쥯ȥˡ
Standard C饤֥libc.oפ롣

user/posixǥ쥯ȥ˰ươmakeץޥɤǥѥ뤹ȡȥǥ쥯ȥˡ
POSIX饤֥posix.oפ롣

user/netǥ쥯ȥ˰ươmakeץޥɤǥѥ뤹ȡȥǥ쥯ȥˡ
network饤֥net.oפ롣

()shellΥѥ

user/shellǥ쥯ȥ˰ươMakefileפ"LIBGCC="ˡGCCȤ߹ߴؿ饤֥libgcc.a
Υѥꤹ롣
ˡlibgcc.aפ/usr/lib/gcc-lib/i386-redhat-linux/3.2/פˤʤ顢LIBGCC=/usr/lib/
gcc-lib/i386-redhat-linux/3.2/libgcc.aפȽ񤭴롣

makeץޥɤǥѥ뤹ȡbin/ǥ쥯ȥˡshellפ롣

()󥹥ȡ
ƥȵLinuxΩơshellץեOS롼ȥǥХEXT2ե륷ƥ
롼ȥǥ쥯ȥ˥ԡ롣

()¹
OSƥȵΩ夲ưȡ롼ȥǥ쥯ȥˤshellץե뤬¹Ԥ롣
shellμ¹Ԥȡ/>פȤץץȤɽ졢ޥɤϤǤ褦ˤʤ롣

()ǽ

ץμ¹
Ʊǥ쥯ȥΥץ¹Ԥʤ./ե̾ ...פǤࡣ
̥ǥ쥯ȥΥץ¹Ԥʤ֥ǥ쥯ȥ̾/ե̾ ...פǤࡣ
Хå饦ɤǼ¹ԤȤϡޥɤκǸˡ &פդ롣
./ե̾ ... &

Ȥ߹ߥޥ
cd      ȥǥ쥯ȥΰư
cd ǥ쥯ȥ̾
halt    ƥߡ
reboot  ƥκƵư
fg      Хå饦ɥ֤üΥեɤѤޤϡΥ֤򵯤
fg (1ֺǽΥ֤롣)
fg %n ('n'ϿnܤΥ֤롣)

ȥ륳ޥ
Ctrl+c  եɼ¹Υ֤νλ
Ctrl+z  եɼ¹Υ֤ߡ
Ctrl+u  á
Ctrl+h  ʸ(= BackSpace)
Ctrl+j  Խλ(= Enter)


ѥޥɥץκ


()ޥѶ̥饤֥Υѥ
user/command/ǥ쥯ȥ˰ươmakeפǥѥ뤹ȡޥѶ̥饤֥command.o
롣

()ƥޥɤΥѥ(˳ƥ饤֥Υѥ (֣ץκ׻) ɬ)

ƥޥɥǥ쥯ȥ˰ươMakefileפ"LIBGCC="ˡGCCȤ߹ߴؿ饤֥libgcc.a
Υѥꤹ롣
ˡlibgcc.aפ/usr/lib/gcc-lib/i386-redhat-linux/3.2/פˤʤ顢LIBGCC=/usr/lib/
gcc-lib/i386-redhat-linux/3.2/libgcc.aפȽ񤭴롣

makeפǥѥ뤹ȡ줾Ρbin/ץǥ쥯ȥ˥ޥɥץब롣

()󥹥ȡ
ƥȵLinuxΩơޥɥץOS롼ȥǥХEXT2ե륷ƥ
Ŭʥǥ쥯ȥ˥ԡ롣

()¹
OSƥȵΩ夲顢̾ΥץƱ褦˼¹Ԥ롣ʣݡʣˡݥȡ


桼ץκλ


()ɥեκ
øǺuser/ǥ쥯ȥ֤Ƥ륷ƥॳؿˤĤƤϡۡڡ
(http://muramura.sourceforge.jp)ΡּפΥڡ˺ܤƤ롣
ʤƤ륷ƥॳ롦ؿϡޤʬ˥ƥȤƤʤΤǡХäꡢ
ɤưʤäꤹ礬롣

()ѥ (˳ƥ饤֥Υѥ (֣ץκ׻) ɬ)

user/ǥ쥯ȥ˰ươMakefileפ"LIBGCC="ˡGCCȤ߹ߴؿ饤֥libgcc.a
Υѥꤹ롣
ˡlibgcc.aפ/usr/lib/gcc-lib/i386-redhat-linux/3.2/פˤʤ顢LIBGCC=/usr/lib/
gcc-lib/i386-redhat-linux/3.2/libgcc.aפȽ񤭴롣

make 'file=ե̾(ĥȴ)'פȥޥɤϤƥѥ뤹ȡbin/ǥ쥯ȥ
˥ե̾Υץե뤬롣
˥ե̾test.c ʤ顢make 'file=test'פǥѥ뤹ȡbin/testפ롣

()󥹥ȡ
ƥȵLinuxΩơեOS롼ȥǥХEXT2ե륷ƥŬ
ǥ쥯ȥ֤

()¹

shell¹Ԥ롣ʣݡʣˡݥȡ

OSľܼ¹Ԥ롣
OSϥǥեȤǡǽΥ桼ץȤƥ롼ȥǥ쥯ȥshellե¹Ԥ뤬
ǽ̤Υץ¹ԤϡޤΥץƥȵΥ롼ȥǥ쥯ȥ֤ơ
ˡsetup2.cץեΡstartExec(SYS_EXEC,"/shell",NULL,NULL)פstartExec(SYS_EXEC,
"/ץե̾",ݥ󥿡ʰ,NULL)Ƚ񤭴ơOSƥѥ뤷ơ
ư롣


ƥȥץ


ƥѥץuser/testuser/nettest(ͥåȥѥƥȥץ)֤ƤΤǡ
ȤǤ롣
ѥλϡuser/testϡǥ쥯ȥ˰ươ桼ץƱˡǤǤ
user/nettestϡǥ쥯ȥγƥƥȥץΥǥ쥯ȥ˰ươmakeפǥѥ
Ǥ롣
ʤ줾ΡMakefileפϡ嵭Ʊ褦GCCȤ߹ߴؿ饤֥libgcc.aפΥѥ꤬
ɬס