ºìÁªLinuxÃÅ»§
Linux°ïÖú

FreeBSDϵĿÉÖ´ÐгÌÐò¸ñʽ

·¢²¼Ê±¼ä:2006-05-15 09:32:37À´Ô´:ºìÁª×÷Õß:linux
ÔÚ FreeBSDϵĿÉÖ´ÐгÌÐòͨ³£¿É·ÖΪÁ½À࣬һÀàΪʹÓø÷ÖÖ½âÊÍÓïÑÔ±àдµÄ½Å±¾£¬Èçsh¡¢awk¡¢perl¡¢TclµÈ£¬ÕâЩ³ÌÐòÐèÒª½âÊͳÌÐò½øÐнâÊÍÖ´ÐУ¬Ð¡ÇÉ·½±ã£¬¶ÔÓÚʵÏÖ²»³£Ê¹Óᢲ»ÒªÇóЧÂʵijÌÐò·Ç³£ÓÐÓã»ÁíÒ»Àà¾ÍÊÇʹÓÃCµÈ¸ß¼¶ÓïÑÔ±àÒëºó²úÉúµÄ¿ÉÖ´Ðжþ½øÖƳÌÐò¡£
1) ½âÊͽű¾³ÌÐò

ʹÓà fileÃüÁî¿ÉÒÔÈ·ÈÏÎļþµÄÀàÐÍ£¬°üÀ¨¿ÉÒÔÈ·¶¨Ò»¸ö³ÌÐòÊÇ¿ÉÖ±½ÓÖ´ÐеĶþ½øÖƳÌÐò£¬»¹ÊǽâÊͽű¾³ÌÐò¡£
$ file a.out
a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), dynamically
linked (uses shared libs), not stripped
$ file /etc/rc
/etc/rc: Bourne shell script text executable
UnixÖ®ËùÒÔ¹¦ÄÜÇ¿´ó£¬Ô­ÒòÖ®Ò»¾ÍÔÚÓÚËüÌṩÁËÇ¿´óµÄÔÙ¿ª·¢ÄÜÁ¦¡£Õâ²»½öÓëÌṩÁ˸߼¶ÓïÑÔCµÄ±àÒëÆ÷Óйأ¬¶øÇÒÒ²ÓëÌṩÁ˺ܶàÖÖÄÜÒÔ½âÊÍ·½Ê½Ö´Ðеļòµ¥½Å±¾ÓïÑÔÓйء£½âÊͳÌÐò½Å±¾µÄÌصãÊÇ·½±ãÐÔ¡¢¼òµ¥Áé»î£¬¶øÇÒÒ²±È½ÏÈÝÒ×ѧϰÈëÊÖ¡£ºÜ¶àÇé¿öÏ£¬ÐèÒªÍê³ÉµÄ¹¤×÷ÈÎÎñ¹¦ÄܱȽϵ¥Ò»£¬²¢²»ÐèҪƵ·±ÔËÐУ¬¶øÇÒÒªÇó¿ìËÙ±àд³öÀ´£¬Õâ¾ÍÊʺÏʹÓýâÊÍÐÍÓïÑÔ±àд£¬²¢ÇÒ½âÊͳÌÐò±¾Éí¾Í¾ß±¸´¦ÀíÎı¾ºÍ×Ö·û´®µÄ±ã½ÝÐÔ£¬²¢Äܹ»ºÍºÜ¶àÏÖÓгÌÐòͨ¹ýϵͳÌṩµÄ¹ÜµÀ¡¢»·¾³±äÁ¿µÈ·½Ê½½áºÏÆðÀ´£¬Ê¹µÃËüÃǷdz£ÊʺÏʵÏÖÎı¾´¦Àí¹¦ÄÜ¡£
½âÊÍÓïÑÔµÄȱµãÊÇÿ´ÎÔËÐгÌÐòʱ¶¼ÒªÔØÈëÓïÑԵĽâÊÍÆ÷£¬½âÊÍÖ´ÐгÌÐò£¬Òò¶øЧÂʽϵͣ¬²¢ÇÒ²»ÄÜÖ±½Ó²Ù×ÝÄÚ´æºÍ I/OÉ豸£¬²»Êʺϱàд´óÐͳÌÐòºÍ¶ÔЧÂÊÒªÇó½Ï¸ßµÄ³¡ºÏ¡£
ÿ¸ö½âÊͽű¾³ÌÐòµÄµÚÒ»ÐÐÖ¸³ö¸Ã½Å±¾³ÌÐòʹÓõĽâÊÍÆ÷£¬ÀýÈçÒ»¸öÆÕͨµÄ shell³ÌÐòµÄµÚÒ»ÐÐΪ£º
#! /bin/sh
²»Í¬µÄ½âÊÍÓïÑÔ¿ÉÓÃÔÚ²»Í¬µÄ·½Ã棬×î³£ÓõÄÓÐ shell½âÊͳÌÐò£¬ÒÀ¾ÝʹÓÃshellµÄ²»Í¬£¬Ò²·ÖΪ²»Í¬µÄshell½Å±¾£¬»ù±¾ÉÏÒ²·ÖΪshºÍcshÁ½ÖÖ²»Í¬µÄ·ç¸ñ¡£ÏµÍ³¹ÜÀíÖо­³£Ê¹ÓÃshell³ÌÐòÀ´Ö´ÐÐһЩÈÕ³£¹ÜÀíÈÎÎñ£¬ºÜ¶àÈí¼þҲʹÓÃshell³ÌÐòÀ´Ìṩ¸¨Öú°²×°ºÍÉèÖÃÈÎÎñ¡£perlÒ²ÊÇÒ»ÖÖ³£Óõġ¢¹¦ÄÜÇ¿´óµÄ½âÊÍÓïÑÔ£¬Ëü¼æÓнâÊÍÐÔ³ÌÐòµÄ·½±ãÐԺ͸߼¶±à³ÌÓïÑÔµÄÇ¿´ó¹¦ÄÜ£¬Ê¹³ÌÐòÔ±ÄÜÔں̵ܶÄʱ¼äÄÚд³ö·Ç³£ÓÐЧµÄ³ÌÐò¡£Òò´ËperlµÃµ½ÁËÖÚ¶à³ÌÐòÔ±µÄÖ§³Ö£¬Í¨¹ýΪperl¿ª·¢Á˸ü¶àµÄ³ÌÐòÄ£¿é£¬½øÒ»²½Ê¹µÃperlµÄ´¦ÀíÄÜÁ¦±äµÃ¸üΪǿ´ó¡£µ±Ç°perlÒѾ­³ÉΪÁË×îÁ÷ÐеÄÒ»ÖÖ½âÊÍÓïÑÔ£¬ÓÈÆäÔÚ±àдWeb·þÎñÆ÷ÉϵÄCGI³ÌÐò·½Ã棬¸üÊÇ´¦ÓÚÎÞ¿ÉÕùÒéµÄµØλ¡£Tcl/tkÊÇÁíÒ»ÖÖ½âÊÍÓïÑÔ£¬ËüÄÜÓÃÔÚX WindowϵͳÏ£¬Ê¹ÓÃÃèÊöÓïÑÔÏÔʾ²»Í¬µÄX¿Ø¼þ£¬Òò´ËºÜ¶àXÓ¦ÓóÌÐòʹÓÃËüÀ´½¨Á¢×Ô¼ºµÄͼÐνӿڡ£
2) ¶þ½øÖÆÖ´ÐгÌÐò

ʹÓø߼¶ÓïÑÔ±àд¡¢²¢¾­¹ý±àÒëµÃµ½µÄ¶þ½øÖÆÖ´ÐгÌÐòÖ´ÐÐЧÂʸü¸ß£¬²¢ÇÒÖ»Óжþ½øÖƸñʽµÄÖ´ÐÐÎļþ²ÅÄܳä·ÖÀûÓà UnixϵͳÌṩµÄÈ«²¿¹¦ÄÜ¡£Í¬ÑùϵͳÄÚºËÒ²ÊÇÒ»¸öÌØÊâ¸ñʽµÄ¶þ½øÖÆÖ´ÐÐÎļþ¡£
ÔçÆÚµÄ UnixʹÓÃa.out¸ñʽ×÷ΪËüµÄÖ´ÐÐÎļþ¸ñʽ£¬Ëæ×ÅUnixµÄ·¢Õ¹£¬ÓÖ³öÏÖÁËÆäËû¼¸ÖÖÖ´ÐÐÎļþµÄ¸ñʽ£¬µ±Ç°×îÖØÒªµÄÖ´ÐÐÎļþ¸ñʽΪELF¸ñʽ£¬²ÉÓÃÕâÖÖ¸ñʽµÄ×î³õÏë·¨ÊÇΪÁËÔÚ²»Í¬Æ½Ì¨¼ä²ÉÓÃÏàͬµÄÖ´ÐÐÎļþ¸ñʽ£¬²¢ÊµÏÖ¶¯Ì¬¹²ÏíÁ¬½Ó¿â¡£ËäÈ»ELFÎļþ¸ñʽ²¢Ã»ÓдﵽAT&T×î³õÉèÏëµÄÈ«²¿Ä¿µÄ£¬µ«ÕâÖÖÎļþ¸ñʽȴ³ÉΪ×îÁ÷ÐеÄÖ´ÐÐÎļþ¸ñʽ¡£³ý´ËÖ®Í⣬ʵ¼ÊʹÓõÄÎļþ¸ñʽ»¹ÓÐÒ»ÖÖ½ÏÀϵÄCOFF¸ñʽ£¬ÕâÖÖ¸ñʽÊÇÔÚUnix System V R3.2ÖÐʹÓõģ¬µ±Ç°Ö»ÓÐÀÏ°æ±¾µÄSCO UnixÖл¹ÔÚʹÓÃËü£¬¶øSCOÒ²ÕýÖð½¥×ªÏòELF¸ñʽ¡£
FreeBSD¿ÉÒÔͬʱ֧³ÖÕâÁ½ÖÖÖ´ÐÐÎļþµÄ¸ñʽ£¬FreeBSD 2.2.x֮ǰµÄ°æ±¾Ê¹ÓÃa.out¸ñʽ×÷ΪȱʡµÄÖ´ÐÐÎļþ¸ñʽ£¬µ½FreeBSD 3.xÖ®ºóELF¸ñʽ³ÉΪȱʡµÄÖ´ÐÐÎļþ¸ñʽ£¬²¢ÇÒÒÔºó»á³¹µ×תÏòELF¡£ÊÂʵÉÏÔÚFreeBSDϵÄa.out¸ñʽ¾ß±¸ÁËÏ൱¶àµÄÌØÐÔ£¬È綯̬Á¬½ÓµÈELF¸ñʽ¾ß±¸µÄÌØÐÔ£¬Ò²ÓÐһЩELF¸ñʽ²»¾ß±¸µÄÌØÐÔ£¬ÈçѹËõÖ´ÐÐÎļþ¸ñʽ¡£µ«ÓÉÓÚFreeBSDÖÐʹÓõıàÒëÆ÷gcc¾ö¶¨²»ÔÙÖ§³Öa.out¸ñʽµÄÔµ¹Ê£¬Òò´ËFreeBSDÒ²±ØÐëתÏòELF¸ñʽ¡£ÕâÒ²Êǵ±Ç°»¹Ö§³Öa.out¸ñʽµÄFreeBSD°æ±¾È±Ê¡Ê¹ÓýÏÀÏ°æ±¾±àÒëÆ÷µÄÔ­ÒòÖ®Ò»¡£
ÔÚ FreeBSDÖУ¬a.out¸ñʽµÄÖ´ÐÐÎļþ¿ÉÒÔÖ§³ÖѹËõÖ´Ðиñʽ£¬ÕâʹµÃʹÓÃgzipѹËõ¹ýµÄa.out¸ñʽµÄÖ´ÐÐÎļþÒ²ÄÜÁ¢¼´Ö´ÐС£ELF¸ñʽµÄ³ÌÐò²»ÌṩÕâÖÖÖ§³Ö¡£
FreeBSDµÄÎļþ¸ñʽ´Óaoutµ½ELFµÄת±äÊǽ¥±äµÄ£¬Ê×ÏÈÊÇÔÚ3.0-RELEASEÖн«Ö´ÐгÌÐòµÄȱʡ¸ñʽת±äΪELF¸ñʽ£¬ÄÚºËÎļþ»¹±£³Öaout¸ñʽ£¬Ö±ÖÁFreeBSD-3.1£¬È«²¿Ö´ÐÐÎļþ¸ñʽ²ÅȱʡÉèÖÃΪELF¸ñʽ¡£
תÏò ELFÒ²Ôì³ÉºÜ¶àÏà¹Ø³ÌÐòµÄת±ä£¬ÈçÔ­ÓеÄBoot Loader²»Ö§³ÖELF¸ñʽµÄÄںˣ¬3.1-RELEASE¾ÍÉý¼¶µ½ÐÂBoot Loader£»¶øÔ­ÓеĿɼÓÔØÄ£¿élkmΪaout¸ñʽ£¬Ò²ÐèҪתÏòELF¸ñʽµÄmodules¡£Ð¿ɼÓÔØÄ£¿éµÄλÖÃΪ/modulesĿ¼£¬²¢Ê¹ÓÃkldload¡¢klduload¡¢kldstatÀ´½øÐйÜÀí¡££¨aout¸ñʽµÄÄ£¿é¹ÜÀíÃüÁîΪmodload¡¢modstatºÍmodunload£©¡£
a.outºÍELF¸ñʽʹÓõĿâÎļþÒ²ÊDz»Í¬µÄ£¬Ê¹ÓÃELFÖ´ÐÐÎļþ¸ñʽµÄFreeBSD 3.xÖУ¬/usr/libÏÂΪELF¸ñʽµÄº¯Êý¿â£¬¶øÓÃÒ»¸ö×ÓĿ¼/usr/lib/aout´æ·Åa.out¸ñʽµÄº¯Êý¿â£¬ÓÃÓÚ¼æÈÝ2.2.x֮ǰ°æ±¾µÄFreeBSD³ÌÐò¡£µ«Õâ¸øһЩʹÓðü×°¼¼ÊõµÄÈí¼þ£¨Ò»Ð©ÖÐÎÄÍâ¹Òϵͳ£©Ôì³ÉÁËһЩСÂé·³¡£¶Ô²»Í¬¸ñʽµÄÖ´ÐÐÎļþҪʹÓò»Í¬µÄ°ü×°¿â£¬ÏµÍ³²»»á½«Óë³ÌÐò±¾Éí¸ñʽ²»Í¬µÄÁ¬½Ó¿âÁ¬½Óµ½³ÌÐòÉÏ£¬¶ÔÓ¦µÄ´íÎóÐÅϢΪ ¡° bad magic ¡± £¬Ö¸³öÎļþ¸ñʽµÄ²»Í¬¡£
ÓÉÓÚ 3.xÖ®ºóµÄȱʡ¸ñʽΪelf¸ñʽ£¬ÎªÁËÉú³Éa.out¸ñʽµÄÎļþ£¬±ØÐëÔÚ±àÒëºÍÁ¬½ÓʱʹÓà -aout²ÎÊý£¬¸æËß±àÒëÆ÷gccºÍÁ¬½ÓÆ÷ldʹÓò»Í¬µÄ¸ñʽÉú³ÉÖ´ÐÐÎļþ¡£
3) ¾²Ì¬Á¬½ÓºÍ¶¯Ì¬Á¬½Ó

ÔÚ²Ù×÷ϵͳ·¢Õ¹µÄÔçÆÚ£¬³ýÁËÄÚºËÌṩµÄ½Ó¿Ú£¬ËùÓеĿ⺯Êý¶¼ÒªÁ¬½Óµ½³ÌÐòÖУ¬ÕâÑùËùÓеijÌÐò¶¼¿ÉÒÔÖ±½ÓÔÚϵͳÄÚºËÏÂÔËÐС£È»¶øÊÂʵÉϴ󲿷ֳÌÐò¶¼»áʹÓÃһЩÏàͬµÄ¿âº¯Êý£¬ÓÈÆäÊÇÔÚʹÓø߼¶ÓïÑÔ±à³ÌµÄʱºò£¬Í¨³£¶¼Ê¹ÓÃͬÑùµÄ¿â¡£ÀýÈ磬 CÓïÑÔ±àдµÄ³ÌÐòͨ³£¶¼Ê¹ÓÃprintfº¯Êý½øÐÐÊä³ö£¬Ê¹ÓÃscanf¶ÁÈëÓû§ÊäÈëÄÚÈÝ¡£Èç¹ûÿ¸ö¿âº¯Êý¶¼Á¬½Óµ½Óû§³ÌÐòÖУ¬ÕâÑùÿ¸ö³ÌÐò¶¼»á°üÀ¨Õâ¸öº¯ÊýµÄÒ»¸ö¿½±´£¬¾ÍÀË·ÑÁËÄÚ´æ¿Õ¼ä¡£
Òò´Ë£¬ÏÖ´ú²Ù×÷ϵͳʹÓö¯Ì¬Á¬½ÓµÄ¼¼Êõ£¬²»½«³£ÓõĿâÖ±½Ó±àÒë½øÿ¸ö³ÌÐòÖУ¬¶øÊDZ£ÁôÏàÓ¦µÄ½Ó¿Ú£¬ÔÚÄÚºËÔØÈë³ÌÐòʱ£¬ÔÙʹÓö¯Ì¬Á¬½Ó³ÌÐò½«¿âÔØÈë²¢ºÍÖ´ÐгÌÐòÁ¬½ÓÆðÀ´¡£Õâ¾ÍÊǶ¯Ì¬Á¬½ÓµÄ¼¼Êõ£¬ÓÉÓÚ¿âºÍ³ÌÐòÊÇ·Ö±ðÔØÈëµÄ£¬Òò´Ë¶à¸ö³ÌÐò¿ÉÒÔ¹²ÏíÒ»¸ö¿âµÄͬһ¸ö¿½±´£¬½ÚÔ¼ÁË×ÊÔ´¡£
²»ÂÛ¶ÔÓÚ a.out¸ñʽ»¹ÊÇELF¸ñʽ£¬FreeBSD¾ùÖ§³Ö¶¯Ì¬Á¬½Ó£¬Òò´ËÓ¦ÓóÌÐòȱʡ¾ÍʹÓö¯Ì¬Á¬½ÓµÄ·½Ê½¡£Èç¹ûÏëʹÓþ²Ì¬Á¬½Ó£¬¿ÉÒÔÔÚÓ¦ÓóÌÐò±àÒëÁ¬½Óʱ£¬Ö¸¶¨-staticÁ¬½ÓÑ¡Ï½«Ä¿±ê³ÌÐòÁ¬½Ó³É¾²Ì¬Á¬½ÓµÄÖ´ÐÐÎļþ¡£ÓÉÓÚ¿â´úÂë±»Á¬½Ó½øÖ´ÐÐÎļþÖУ¬¾²Ì¬Á¬½ÓµÄÖ´ÐÐÎļþÒª±È¶¯Ì¬Á¬½ÓµÄÖ´ÐÐÎļþÒª´ó¡£
ÒýÓÃ:
$ cc -static -o a1 hello.c
$ cc -o a2 hello.c
$ ls -l a1 a2
-rwxr-xr-x 1 wb wheel 45017 Apr 18 16:26 a1
-rwxr-xr-x 1 wb wheel 2540 Apr 18 16:27 a2

¿ÉÒÔʹÓóÌÐò lddÀ´È·¶¨Ò»¸ö³ÌÐòʹÓõĶ¯Ì¬Á¬½Ó¿â£º
[quote]bash-2.02$ ldd /usr/bin/vi
/usr/bin/vi:
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 1 ÌõÆÀÂÛ

  1. amwwy248 ÓÚ 2007-04-22 17:48:18·¢±í:

    freeBSD»¹Ã»Ì«¶à½Ó´¥.Á˽ⲻÉî;¶¥.
    ¼ÓQQȺ½»Á÷:31560292