LinuxÏÂC¿ª·¢——gcc£¬gdbµÄʹÓÃ
Linux
ÏÂ
C
¿ª·¢——
gcc
£¬
gdb
µÄʹÓÃ
×÷Õߣº
zccst
ÎÒÃÇѧϰµÄ¹ý³ÌÓ¦¸ÃÊÇÒ»¸ö»ýÀ۵Ĺý³Ì£¬ÓÐÎÞµ½ÓУ¬ÓÖÉÙµ½¶à£¬¶ø²»ÄÜÏñÏÂɽµÄºï×Ó¡£
9
Ô·ݵÄʱºòÊǵÚÒ»´Îϵͳѧϰ
gcc, gdb, makefile
£¨Ïê¼ûÇ°Ãæ²©¿Í£©¡£Èç½ñ×÷ΪǶÈëʽϵͳµÄÒ»¸ö×é³É²¿·Ö£¬¾ö¶¨ÖØÑ§Ò»´Î£¬¸Ð¾õÀí½â¼ÓÉîÁËһЩ¡£
gcc
±àÒëÆ÷
ǰÌá±à¼¹¤¾ßµÄʹÓãº
vi
vim
Emacs
µÈ¡£
ÀíÂÛÆª
gcc
¿ÉÒÔʹ³ÌÐòÔ±Áé»îµØ¿ØÖƱàÒë¹ý³Ì¡£±àÒë¹ý³ÌÒ»°ã¿ÉÒÔ·ÖΪÏÂÃæËĸö½×¶Î£¬Ã¿¸ö½×¶Î·Ö±ðµ÷Óò»Í¬µÄ¹¤¾ß½øÐд¦Àí£¬Èçͼ
9-18
Ëùʾ¡£
Linux
ϵͳÖпÉÖ´ÐÐÎļþÓÐÁ½ÖÖ¸ñʽ¡£µÚÒ»ÖÖ¸ñʽÊÇ
a.out
¸ñʽ£¬ÕâÖÖ¸ñʽÓÃÓÚÔçÆÚµÄ
Linux
ϵͳÒÔ¼°
Unix
ϵͳµÄÔʼ¸ñʽ¡£
a.out
À´×ÔÓÚ
Unix C
±àÒë³ÌÐòĬÈϵĿÉÖ´ÐÐÎļþÃû¡£µ±Ê¹Óù²Ïí¿âʱ£¬
a.out
¸ñʽ¾Í»á·¢ÉúÎÊÌâ¡£°Ñ
a.out
¸ñʽµ÷ÕûΪ¹²Ïí¿âÊÇÒ»Öַdz£¸´ÔӵIJÙ×÷£¬ÓÉÓÚÕâ¸öÔÒò£¬Ò»ÖÖеÄÎļþ¸ñʽ±»ÒýÈë
Unix
ϵͳ
5
µÄµÚËİ汾ºÍ
Solaris
ϵͳÖС£Ëü±»³ÆÎª¿ÉÖ´ÐкÍÁ¬½ÓµÄ¸ñʽ£¨
ELF
£©¡£ÕâÖÖ¸ñʽºÜÈÝÒ×ʵÏÖ¹²Ïí¿â¡£
ELF
¸ñʽÒѾ±»
Linux
ϵͳ×÷Ϊ±ê×¼µÄ¸ñʽ²ÉÓá£
gcc
±àÒë³ÌÐò²úÉúµÄËùÓеĶþ½øÖÆÎļþ¶¼ÊÇ
ELF
¸ñʽµÄÎļþ£¨¼´Ê¹¿ÉÖ´ÐÐÎļþµÄĬÈÏÃûÈÔÈ»ÊÇ
a.out
£©¡£½Ï¾ÉµÄ
a.out
¸ñʽµÄ³ÌÐòÈÔÈ»¿ÉÒÔÔËÐÐÔÚÖ§³Ö
ELF
¸ñʽµÄϵͳÉÏ¡£
×¢£º
GCC
Ö§³ÖÊýÖÖµ÷ÊÔºÍÆÊÎöÑ¡Ïî¡£ÔÚÕâЩѡÏîÀ×î³£ÓõÄÊÇ
-g
ºÍ
-pg
Ñ¡Ïî¡£
ʵ¼ùƪ
gcc
µÄʹÓøñʽ£º
gcc
[options][filenames]
ÆäÖÐ
filenames
ΪËùÒª±àÒëµÄ³ÌÐòÔ´Îļþ¡£
options
¼ûÏÂÎÄ
gcc
µÄÖ÷Òª²ÎÊý¡£
µ±Ê¹ÓÃ
gcc
ʱ£¬
gcc
»áÍê³ÉÔ¤´¦Àí¡¢±àÒë¡¢»ã±àºÍÁ¬½Ó¡£Ç°Èý²½·Ö±ðÉú³ÉÄ¿±êÎļþ£¬Á¬½Óʱ£¬°ÑÉú³ÉµÄÄ¿±êÎļþÁ´½Ó³É¿ÉÖ´ÐÐÎļþ¡£
gcc
¿ÉÒÔÕë¶ÔÖ§³Ö²»Í¬µÄÔ´³ÌÐòÎļþ½øÐв»Í¬´¦Àí£¬Îļþ¸ñʽÒÔÎļþµÄºó׺À´Ê¶±ð¡£
vi hello.c
Ò»¡¢³£¼û²½Ö裺
¶ÔÓÚÖ»ÓÐÒ»¸öÔ´ÎļþµÄ¼òµ¥³ÌÐò£¬³£³£Ö»ÓбàÒ룬ÔËÐÐÁ½²½¡£
1
£¬
gcc hello.c -o hello
2
£¬
./hello
¶þ¡¢
gcc
±àÒëÁ÷³Ì
gcc and g++
·Ö±ðÊÇ
gnu
µÄ
c & c++
±àÒëÆ÷
gcc/g++
ÔÚÖ´ÐбàÒ빤×÷µÄʱºò£¬×ܹ²ÐèÒª
4
²½
hello.c
(
Ô´Âë
)
1
£¬
hello.i
Éú³ÉÔ¤´
Ïà¹ØÎĵµ£º
ÔÚ¹ýÈ¥µÄÊ®ÄêÖУ¬Ç¶ÈëʽϵͳµÄ¿ª·¢·¢ÉúÁ˺ܴóµÄ±ä»¯¡£ÒÔǰǶÈëʽÉ豸ÍùÍùÊÇÒ»¸ö¹ÂÁ¢µÄ¡¢×ÊÔ´ÓÐÏÞµÄϵͳ£¬ËüÃÇ×·ÇóµÄÊÇÔÚÓÐÏ޵ļ۸ñÉÏÂú×ãÒ»¶¨µÄ¹¦ÄÜÐÔÒªÇó¡£Í¨³£ËüÃDzÉÓÃÄÇЩ¹¦Äܲ¢²»Ç¿´óµÄCPU£¬ÕâÒ²ÊÇ¿ª·¢Õß²»µÃ²»¾¡¿ÉÄܵØÑ¹ËõǶÈëʽϵͳÐÔÄܵÄÔÒò¡£¶ø½ñÌìÈËÃǶÔǶÈëʽÉ豸ÔÚ ......
Ò».Ìí¼ÓÓû§£º
suÃüÁîʹÓÃrootȨÏÞ
ÐÞ¸Ä/etc/passwd,Ìí¼ÓÓû§¼Ç¼
pwconvÈÃ/etc/passwdºÍ/etc/shadowͬ²½
ÐÞ¸Ä/etc/group
´´½¨Óû§µÄÖ÷Ŀ¼£¬²¢°ÑÓû§Æô¶¯Îļþ¼Ð¸´ÖƵ½Óû§µÄÖ÷Ŀ¼
cp -R /etc/skel /home/xxj
¸Ä±äÐÂÔöÓû§µÄÊôÖ÷ºÍȨÏÞ
chown xxj:xxj /home/xxj
ls -ld /home/xxj
chmod 700 /home/xxj
Éè ......
1.¹ã¸æÎ¶Ì«Å¨£¬¹ý·Ö¿äÕÅÓû§ÌåÑé¡£
ÕâÊÇLinuxÐû´«ÖÐ×î´óµÄ벡£¬Ò²Ðí¶ÔÏàÐÅ¹ã¸æµÄÀÏÍâÓÐÒ»µãÓ㬵«¶ÔÓÚÔ±¾¾Í¶Ô¹ã¸æÓз´¸Ð̬¶ÈµÄÖйúÓû§À´Ëµ£¬µ±ÕæÕýʹÓÃLinuxºó·¢ÏÖ²¢²»ÏñÐû´«µÄÄÇÑùºÃÓÃʱ£¬»á²úÉú¼«´óµÄ·´¸ÐÐÄÀï¡£
ÕâÖÖÐû´«×îµäÐ͵ÄÑÔÂÛ¾ÍÊÇ“Linux±ÈWindows¿ì£¬¶øÇÒÕ¼ÓÃÏ ......
ÏÈÕ³ÌùÒ»¸ölinux×î¼òµ¥µÄÇý¶¯£¬Æäʵ¶ÔÓÚÒ»¸ö´Ó2.4ÍæÉÏÀ´µÄÈËÀ´Ëµ£¬Çý¶¯²»¸´ÔÓ£¬±È½Ï²»Ï°¹ßµÄÊÇÄǸömakefile
Çý¶¯±¾Éí£º
hello.c:
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(vodi){
&nbs ......
LinuxÄÚºËÌṩÁËlistÕâ¸öÊý¾Ý½á¹¹ÒÔ¼°²Ù×÷º¯Êý¡£Õâ¸öÊý¾Ý½á¹¹ÔÚÄÚºËÇý¶¯ÖÐʹÓù㷺£¬¶øÇÒȷʵ·½±ãʹÓá£ÎªÁËÏêϸÁ˽âÕâ¸öÊý¾Ý½á¹¹µÄÓ÷¨£¬·½±ãÒÔºóʹÓ㬰ÑÕâ¸öÊý¾Ý½á¹¹ÀïÃæµÄ¹¦Äܶ¼ÊÔÓÃÁËÒ»´Î£¬Çå³þÁ˺ܶࡣÏÂÃæÊÇʵÑé³ÌÐòºÍ×Ô¼ºµÃ³öµÄʹÓ÷½·¨£¬Çë¸ßÊÖ¶à¶àÖ¸½Ì¡£ Struct list_head { struct list_head *next, *prev ;}£» ......