ËüÃÇͨ¹ý½«¶à¸öÄ¿±êÎļþ£¨.o Îļþ£©´ò°ü³ÉÒ»¸öµ¥Ò»µÄ¹éµµÎļþ£¬¼ò»¯ÁËÁ´½Ó¹ý³Ì£¬Ìá¸ßÁË´úÂëµÄÖØÓÃÐÔºÍÄ£¿é»¯
È»¶ø£¬ÔÚʵ¼ÊÏîÄ¿ÖУ¬ÓÈÆäÊÇ´óÐÍÏîÄ¿£¬ÎÒÃÇ¿ÉÄÜ»áÓöµ½ÐèÒª½«¶à¸ö¾²Ì¬¿âºÏ²¢ÎªÒ»¸öµÄÇé¿ö£¬ÒÔ¼ò»¯ÏîÄ¿µÄÒÀÀµ¹ÜÀí¡¢¼õÉÙ¹¹½¨Ê±¼ä£¬»òÕßÂú×ãÌØ¶¨µÄ·Ö·¢ÐèÇó
±¾ÎĽ«ÉîÈë̽ÌÖÔÚ Linux »·¾³Ïºϲ¢ .a ÎļþµÄ·½·¨£¬²¢²ûÊöÆäÖØÒªÐÔºÍʵ¼ùÖеĿ¼Á¿
Ò»¡¢ÎªÊ²Ã´ÒªºÏ²¢ .a Îļþ 1.¼ò»¯ÒÀÀµ¹ÜÀí£º ÔÚ¸´ÔÓµÄÏîÄ¿ÖУ¬ÒÀÀµÁ´¿ÉÄܷdz£Èß³¤£¬Ã¿¸ö¿â¶¼¿ÉÄÜÓÐ×Ô¼ºµÄÒÀÀµ¹ØÏµ
ͨ¹ýºÏ²¢¶à¸ö¾²Ì¬¿âΪһ¸ö£¬¿ÉÒÔ¼ò»¯ÕâЩÒÀÀµ¹ØÏµ£¬Ê¹µÃ×îÖÕµÄÓ¦ÓóÌÐò»ò¿âÖ»ÐèÁ´½ÓÒ»¸ö¹éµµÎļþ£¬´ó´ó¼õÉÙÁËÁ´½ÓÆ÷µÄ¸ºµ£ºÍÅäÖø´ÔÓ¶È
2.ÓÅ»¯¹¹½¨Á÷³Ì£º ¹¹½¨¹ý³ÌÖУ¬Á´½Ó½×¶ÎÍùÍùÊÇ×ÊÔ´ÏûºÄ×î´óµÄ²¿·ÖÖ®Ò»
ͨ¹ý¼õÉÙÁ´½Ó´ÎÊýºÍÁ´½ÓµÄÎļþÊýÁ¿£¬ºÏ²¢¾²Ì¬¿âÄܹ»ÏÔÖø¼õÉÙ¹¹½¨Ê±¼ä£¬Ìá¸ß¿ª·¢Ð§ÂÊ
3.¼õÉÙ·Ö·¢Ìå»ý£º ÔÚ·Ö·¢Èí¼þʱ£¬ÓÈÆäÊÇǶÈëʽϵͳ»ò×ÊÔ´ÊÜÏ޵Ļ·¾³ÖУ¬¼õÉÙÎļþÊýÁ¿ÓÐÖúÓÚ¼ò»¯²¿Êð¹ý³Ì£¬¼õÉÙ´æ´¢ÐèÇó
ºÏ²¢ºóµÄ¾²Ì¬¿â×÷Ϊһ¸öµ¥Ò»Îļþ£¬¸üÒ×ÓÚ¹ÜÀíºÍ·Ö·¢
4.ÔöÇ¿´úÂë·â×°£º ºÏ²¢¾²Ì¬¿â¿ÉÒÔÊÓΪһÖÖ´úÂë·â×°ÊֶΣ¬½«ÄÚ²¿ÊµÏÖϸ½ÚÒþ²ØÆðÀ´£¬½ö±©Â¶±ØÒªµÄ½Ó¿Ú¸øÍⲿʹÓã¬ÓÐÖúÓÚά»¤´úÂëµÄÕû½àÐԺͰ²È«ÐÔ
¶þ¡¢ºÏ²¢ .a ÎļþµÄ·½·¨ ÔÚ Linux Ï£¬ºÏ²¢ .a ÎļþÖ÷Ҫͨ¹ýÁ½ÖÖ;¾¶ÊµÏÖ£ºÊ¹ÓÃ`ar` ÃüÁîÊÖ¶¯²Ù×÷ºÍʹÓù¹½¨ÏµÍ³×Ô¶¯»¯´¦Àí
2.1 ʹÓÃ`ar` ÃüÁîÊÖ¶¯ºÏ²¢ `ar` ÊÇ Linux ÏÂÓÃÓÚ´´½¨¡¢Ð޸ĺÍÌáÈ¡¾²Ì¬¿âµÄ¹¤¾ß
ͨ¹ý `ar` ÃüÁÎÒÃÇ¿ÉÒÔ½«¶à¸ö .a ÎļþµÄÄÚÈÝÌáÈ¡³öÀ´£¬ÔÙÖØÐ´ò°ü³ÉÒ»¸öеĹ鵵Îļþ
²½ÖèÒ»£ºÌáȡĿ±êÎļþ Ê×ÏÈ£¬Ê¹Óà `ar` ÃüÁîµÄ`x` Ñ¡Ïî´Ó¸÷¸ö .a ÎļþÖÐÌáÈ¡³öËùÓÐµÄ .o Îļþ
mkdir temp_objs cd temp_objs ar x ../lib1.a ar x ../lib2.a ÖØ¸´ÉÏÊöÃüÁֱµ½ËùÓÐÐèÒªºÏ²¢µÄ .a Îļþ¶¼±»´¦Àí ²½Öè¶þ£º´´½¨Ðµľ²Ì¬¿â È»ºó£¬Ê¹Óà `ar` ÃüÁîµÄ`cr` Ñ¡ÏÕâЩ .o ÎļþÖØÐ´ò°ü³ÉÒ»¸öеľ²Ì¬¿â
cd .. ar cr libmerged.atemp_objs/.o rm -rf temp_objs ÇåÀíÁÙʱĿ¼ ÕâÖÖ·½·¨ËäȻֱ½ÓÓÐЧ£¬µ«ÊÖ¶¯²Ù×÷½ÏΪ·±Ëö£¬ÇÒÈÝÒ׳ö´í£¬ÌرðÊÇÔÚ´¦Àí´óÁ¿¿âÎļþʱ
Òò´Ë£¬¸üÍÆ¼öʹÓù¹½¨ÏµÍ³×Ô¶¯»¯ÕâÒ»¹ý³Ì
2.2 ʹÓù¹½¨ÏµÍ³×Ô¶¯»¯ºÏ²¢ ÏÖ´ú¹¹½¨ÏµÍ³Èç Make¡¢CMake¡¢Autotools µÈ£¬ÌṩÁËÇ¿´óµÄ×Ô¶¯»¯¹¦ÄÜ£¬¿ÉÒÔ·½±ãµØ¹ÜÀíÏîÄ¿µÄ¹¹½¨Á÷³Ì£¬°üÀ¨¾²Ì¬¿âµÄºÏ²¢
ʹÓà Makefile ÔÚ Makefile ÖУ¬¿ÉÒÔ¶¨ÒåÒ»¸ö¹æÔòÀ´Ö´ÐÐÉÏÊöÊÖ¶¯²½Ö裬µ«×Ô¶¯»¯Íê³É
¶¨ÒåÔ´¾²Ì¬¿âºÍÄ¿±êºÏ²¢¿â SRC_LIBS = lib1.a lib2.a lib3.a MERGED_LIB = libmerged.a ÖмäÄ¿±êÎļþĿ¼ OBJ_DIR =obj_temp ´´½¨ÖмäĿ¼ $(shell mkdir -p $(OBJ_DIR)) ÌáÈ¡ËùÓÐ .o Îļþµ½ÖмäĿ¼ EXTRACT_CMDS= $(foreach lib,$(SRC_LIBS),arx $(lib) -C$(OBJ_DIR) &&) true ¹¹½¨¹æÔò all: @echo Extracting objects...