gccµÄ±àÒë¹ý³Ì·ÖΪËIJ½£¬·Ö±ðΪ£º
(1)Ô¤±àÒë (Pre-Processing)
(2)±àÒë (Compiling)
(3)»ã±à (Assembling)
(4)Á´½Ó (Linking)
ÒÔhello.cΪÀý˵Ã÷£º
#include<stdio.h>
int main(void)
{
printf("Hello World!");
return 0;
}
(1)Ô¤±àÒë½×¶Î (Pre-Processing)
Ôڸý׶Σ¬±àÒëÆ÷½«ÉÏÊö´úÂëÖеÄstdio.h±àÒë½øÀ´£¬²¢ÇÒʹÓÃgcc -E½øÐв鿴(-EÈÃgccÔÚÔ¤´¦Àí½áÊøºóÍ£Ö¹±àÒë)
gcc -E hello.c -o hello.i
²é¿´hello.i¿É¼û£¬gccȷʵ½øÐÐÁËÔ¤´¦Àí£¬Ëü°Ñ"stdio.h"µÄÄÚÈݲåÈëµ½hello.iÎļþÖÐ
(2)±àÒë½×¶Î
ÔÚÕâ¸ö½×¶Î£¬gccÊ×Ïȼì²é´úÂëµÄ¹æ·¶ÐÔ£¬ÊÇ·ñÓÐÓï·¨´íÎóµÈ£¬ÒÔÈ·¶¨´úÂëµÄʵ¼ÊÒª×öµÄ¹¤×÷£¬ÔÚ¼ì²éÎÞÎóºó
gcc°Ñ´úÂë±àÒë³É»ã±àÓïÑÔ£¬¿ÉÒÔʹÓÃ-SÑ¡Ïî½øÐв鿴£¬¸ÃÑ¡ÏîÖ®½øÐбàÒë¶ø²»½øÐлã±à£¬Éú³É»ã±à´úÂë
gcc -S hello.i -o hello.s
(3)»ã±à½×¶Î
¾ÍÊǰѱàÒë½×¶ÎÉú³ÉµÄ.sÎļþת³ÉÄ¿±êÎļþ,¿ÉÒÔʹÓÃÑ¡Ïî-c ,¾ÍÊǰѻã±à´úÂëת»¯³É.oµÄ¶þ½øÖÆÄ¿±ê´úÂëÁË
gcc -c hello.s -o hello.o
(4)Á´½Ó½×¶Î
Ôڳɹ¦±àÒëÖ®ºó¾Í½øÈëÁËÁ´½Ó½ ......
sftp ÊÇÒ»¸ö½»»¥Ê½Îļþ´«Êä³Ìʽ¡£ËüÀàËÆÓÚ ftp, µ«Ëü½øÐмÓÃÜ´«Ê䣬±ÈFTPÓиü¸ßµÄ°²È«ÐÔ¡£Ï±߾ͼòµ¥½éÉÜÒ»ÏÂÈçºÎÔ¶³ÌÁ¬½ÓÖ÷»ú£¬½øÐÐÎļþµÄÉÏ´«ºÍÏÂÔØ£¬ÒÔ¼°Ò»Ð©Ïà¹Ø²Ù×÷¡£
ÔÚubuntuϵݲװapt-get install sftp ,µ±È»µÃÈ·±£ÄúÓÐ×ã¹»µÄȨÏÞ°²×°¸Ã³ÌÐò
linuxÏÂÈçºÎʹÓÃsftpÃüÁî¡£
¾ÙÀý£¬ÈçÔ¶³ÌÖ÷»úµÄ IP ÊÇ 202.206.64.33»òÕßÊÇÓòÃûwww.hebust.edu.cn,Óû§ÃûÊÇ fyt
,ÔÚÃüÁîÐÐģʽÏÂ:sftp fyt@202.206.64.33»òÕß fyt@www.hebust.edu.cn¡£»Ø³µÌáʾÊäÈëÃÜÂë¡£½øÈëÌáʾ·û
sftp>
Èç¹ûµÇ½Զ³Ì»úÆ÷²»ÊÇΪÁËÉÏ´«ÏÂÔØÎļþ£¬¶øÊÇÒªÐÞ¸ÄÔ¶³ÌÖ÷»úÉϵÄijЩÎļþ¡£¿ÉÒÔ
ssh fyt@202.206.64.33 £¨Æäʵsftp¾ÍÊÇssh µÄÒ»¸ö³Ìʽ¡££©
sftp> get /var/www/fuyatao/index.php /home/fuyatao/
ÕâÌõÓï¾ä½«´ÓÔ¶³ÌÖ÷»úµÄ /var/www/fuyatao/Ŀ¼Ï½« index.php ÏÂÔØµ½±¾µØ /home/fuyatao/Ŀ¼Ï¡£
sftp> put /home/fuyatao/downloads/Linuxgl.pdf /var/www/fuyatao/
ÕâÌõÓï¾ä½«°Ñ±¾µØ /home/fuyatao/download ......
×î½ü£¬¿ªÊ¼ÑжÁÒ»ÏÂLinuxµÄÄں˴úÂ룬¸ÕÒ»¿ªÊ¼£¬¾ÍÓÐÁîÈ˾ªÌ¾µÄ·¢ÏÖ£¬²»µÃ²»¸Ð̾Äں˴úÂëÉè¼ÆµÃÖ®ÃÀ£¡µ¥ÊÇ×î³£ÓõÄÁ´±íÒ²Éè¼ÆµÃ²»µÃ²»ÁîÈËÅå·þ£¡
1.1.Á´±ílist_head
include/linux/list.h
ºÜ¾µä£¬Á´±íÔÚÄÚºËÖкܳ£Óã¬ÀýÈç¹ÜÀí½ø³Ì£¬½ø³ÌµÄ¸÷¸ö״̬¶ÓÁж¼ÊÇʹÓÃÕâ¸öË«ÏòÁ´±íʵÏֵġ£ÄÚºËÖеÄÁ´±í¶¨Òå³ÉºÍÊý¾ÝÎ޹صÄÐÎʽ£¬¶ø²»ÊÇͨ³£ÎÒÃÇʹÓõÄÁ´±í¸ñʽ£¬ÀýÈç
typedef struct _list{
Elemtype elem;
struct _list *next;
}list;
ÄÚºËÖеÄÁ´±í¶¨ÒåΪ
struct list_head{
struct list_head *next, *prev;
};
¿É¼û£¬Õâ¸öÁ´±í½ÚµãÖв»°üº¬ÈκÎÊý¾Ý£¬Ö»ÓÐÁ½¸öÖ¸Õë¡£µ±ÐèҪʹÓÃÁ´±íÀ´×éÖ¯Êý¾Ý½á¹¹Ê±£¬Õâ¸ö½á¹¹ÖоͰüº¬Ò»¸ölist_head³ÉÔ±£¬ÀýÈç
struct _list_struct{
Elemtype elem;
struct list_head list;
...
};
ÏÔ¶øÒ×¼û£¬Á´±íʵÏֳɺÍÊý¾Ý·ÖÀëµÄºÃ´¦ÊÇ£¬²»ÓÃΪÿÖÖÊý¾Ý¶¼¶¨ÒåÁ´±í²Ù×÷£¬¿ÉÒÔʹÓÃͳһµÄÁ´±í²Ù×÷¼´¿É¡£µ«ÊÇÎÊÌâÊÇ£ºÖ»ÖªµÀÊý¾Ý³ÉÔ±listµÄµØÖ·£¬ÔõÑùÈ¥·ÃÎÊ×ÔÉíÒÔ¼°ÆäËû³ÉÔ±ÄØ£¿ ......
1. ǰÑÔ
±¾ÎĽéÉÜlinuxÄÚºËÖÐһЩ³£ÓõÄÊý¾Ý½á¹¹ºÍ²Ù×÷¡£
2. Ë«ÏòÁ´±í(list)
linuxÄÚºËÖеÄË«ÏòÁ´±íͨ¹ý½á¹¹ struct list_headÀ´½«¸÷¸ö½ÚµãÁ¬½ÓÆðÀ´£¬´Ë½á¹¹»á×÷ΪÁ´±íÔªËØ½á¹¹ÖеÄÒ»¸ö²ÎÊý£º
struct list_head {
struct list_head *next, *prev;
};
Á´±íÍ·µÄ³õʼ»¯£¬×¢Ò⣬½á¹¹ÖеÄÖ¸ÕëΪNULL²¢²»Êdzõʼ»¯£¬¶øÊÇÖ¸Ïò×ÔÉí²ÅÊdzõʼ»¯£¬Èç¹ûÖ»Êǰ´ÆÕͨÇé¿öϵÄÖÃΪNULL£¬¶ø²»ÊÇÖ¸Ïò×ÔÉí£¬ÏµÍ³»á±ÀÀ££¬ÕâÊÇÒ»¸öÈÝÒ×·¸µÄ´íÎó£º
#define LIST_HEAD_INIT(name) { &(name), &(name) }
#define LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
#define INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
×î³£ÓõÄÁ´±í²Ù×÷£º
²åÈëµ½Á´±íÍ·:
void list_add(struct list_head *new, struct list_head *head);
²åÈëµ½Á´±íβ:
void list_add_tail(struct list_head *new, struct list_head *head);
ɾ³ýÁ´±í½Úµã:
void list_del(struct list_head *entry);
½«½ÚµãÒÆ¶¯µ½ÁíÒ»Á´±í:
void list_move(s ......
Linux®¼¼Êõ¡¢¿ª·¢Ä£ÐͺÍÉçÇø¶¼¶Ô IT Òµ²úÉúÁËÖØÒªµÄÓ°Ï죬ÎÒÃÇÄÜ×öµÄ¾ÍÊÇÕ¾µ½Ò»±ß¿´¿´ÕâЩ£¬ºÜ¸ßÐËÓë developerWorks Ò»Æð¶È¹ýÁ˵ÚÒ»¸ö 10 Äê¡£Linux ÍŶÓÒѾ½«ÕâЩ¶Ô Linux ²úÉúÖØ´óÓ°ÏìµÄÄÚÈÝÕûÀíµ½Ò»Æð¡£
¹ýÈ¥ 10 ÄêÀLinux ·¢ÉúÁËÌ«¶àµÄÊÂÇ飬ºÜÄÑÍêÕûµØÁгö¸Ã²Ù×÷ϵͳµÄÖØÒªÊ¼þºÍ¼¼Êõ¸Ä½ø¡£¾¡¹ÜÈç´Ë£¬ÎªÁËÇì×£ÎÒÃǵÄÊ®ËêÉúÈÕ£¬Linux ÍŶӻعËÍùÊ£¬²¢ÏòÄú¹«¿ªÖ÷ÒªµÄÀï³Ì±®Ê¼þ£¬ÎªÊ²Ã´ËüÃÇÈç´ËÖØÒª£¬ÒÔ¼°Ïà¹ØÎÄÕ¡£¾´ÇëÆÚ´ý¡£
1. Linux רҵлáÈÏÖ¤
2000 Ä꣬LPI ·¢²¼²âÊÔ 1a£¬ÕâÊǵÚÒ»¸ö Linux ¹ÜÀíÔ±ÈÏÖ¤¿¼ÊÔ£¬¸Ã¼Æ»®ÏÖÔÚ°üÀ¨ 3 ¸öÈÏ֤ˮƽ£¬¹© 7 ÃÅ¿¼ÊÔ¡£2002 Ä꣬developerWorks ·¢²¼Á˵ÚÒ»¸ö LPI ±¸¿¼½Ì³Ì£¬ÓÉ Daniel Robbins ±àд£¬´Ó 2002 ÄêÆðÎÒÃÇÒ»Ö±±£³Ö¸Ã½Ì³ÌµÄÓëʱ¾ã½ø¡£
ÎªÊ²Ã´ÖØÒª£ºÄú¿ÉÒÔÖÊÒÉÈÏÖ¤µÄ¼ÛÖµ£¬µ«ÊÂʵÊÇ£¬¹ÍÖ÷ÐèÒªÒ»ÖÖͳһµÄ·½·¨À´¶ÈÁ¿ Linux ר¼ÒµÄ¼¼ÄÜ£¬Õâ±íÃ÷ Linux ÒѾµ½À´¡£
Ïà¹ØÎÄÕ£º
LPI ±¸¿¼½Ì³Ì
ѧϰ Linux£¬101£ºLPIC-1 ·Ïßͼ
2. Samba
Andrew Tridgell µÄ Samba ÔçÓÚ developerWorks 5 Äê»ò 6 Ä꣬µ«ÊÇËû¶Ô Microsoft Server Message Block (SMB) ÐÒéµÄʵÏÖÊÇËùÓлìºÏÍøÂçµÄÒ»¸öÖØÒª×é¼þ£¬ÒÔÖÁÓÚÎÒÃDz»µÃ² ......
Èí¼þ»·¾³
debian 5.0
Apache Httpd 2.0.63 (http://httpd.apache.org
)
OpenSSL 0.9.81 (http://www.openssl.org/source
)
SSL-Tools (http://www.openssl.org/contrib/ssl.ca-0.1.tar.gz
)
°²×°²½Öè(ËùÓвÙ×÷ʹÓÃrootÓû§½øÐÐ)£º
1. OpenSSL
#tar zxvf openssl-0.9.81.tar.gz
#cd openssl-0.9.81
#./config
#make
#make install
´Ë¾Ù½«°²×°×îеÄOpenSSLµ½/usr/local/sslĿ¼ÖУ¬ÎÞÐèÀí»áϵͳÖÐÒÑÓа汾µÄOpenSSL£¬Ò²²»ÒªÈ¥Ð¶ÔØËü£¬·ñÔò»áµ¼ÖºܶàµÄÓ¦ÓóÌÐòÎÞ·¨Õý³£Ö´ÐУ¬ÀýÈçX´°¿ÚÎÞ·¨½øÈëµÈ´íÎó¡£
2. Apache Httpd
#tar zxvf httpd-2.0.63.tar.gz
#cd httpd-2.0.63
#./configure --prefix=/usr/local/apache/httpd --enable-ssl=static --with-ssl=/usr/local/ssl
#make
#make install
´Ë²½ÖèÔÚ/apache/httpdĿ¼Öа²×°httpd·þÎñ(ͨ¹ý²ÎÊý--prefixÖ¸¶¨)£¬Í¬Ê±Ê¹ÓÃ--with-sslÖ¸¶¨¸Õ²ÅËù°²×°OpenSSLµÄ·¾¶£¬ÓÃÓÚ½«mod_ssl¾²Ì¬µÄ±àÒëµ½httpd·þÎñÖС£
3.ÖÆ×÷Ö¤Êé
ÎÒÃDZØÐëÊÖ¹¤À´Éú³ÉSSLÓõ½µÄÖ¤Ê飬¶ÔÖ¤Êé²»ÊìϤµÄÈË£¬ÓÐÒ»¸ö¹¤¾ß¿ÉÒÔʹÓãºhttp://www.openssl.org/contrib/ssl.ca-0.1.tar.gz
¡£ÏÂÃæÊÇÈçºÎͨ¹ýÕâ¸ö¹¤¾ßÀ´Éú³ÉÖ¤ÊéµÄ¹ý³Ì ......