Linux GCC makeÎļþµÄд·¨ ×Ü½á°æ
Ŀ¼½á¹¹Îª£º
inc/hello.h
src/hello.c
main/main.c
Makefile
ÎļþÄÚÈÝΪ£º
hello.h:
void hello(char name[]);
hello.c:
#include <stdio.h>
void hello(char name[])
{
printf("Hello %s!\n", name);
}
main.c:
#include <stdio.h>
#include "hello.h"
// The second hello.h should in ""
int main()
{
hello("GCC");
printf("Haha Linux Ubuntu!\n");
return 0;
}
Makefile:
# String declaration
objects = main.o hello.o
# Command
app : $(objects)
cc -o app $(objects)
main.o : main.c hello.h stdio.h
cc -c $< -I ./inc
hello.o : hello.c stdio.h
cc -c $<
# Search paths
vpath %.h /usr/include : inc
vpath %.c main : src
# Clean the intermediate files
.PHONY : clean
clean :
rm app *~ $(objects)
Ê×ÏÈ£¬ÐèÒªÃ÷È·Ò»µã£¬ÕâÀïÃæÓÐÁ½¸öÖ´ÐгÌÐò£¬Ò»¸ömake£¬Ò»¸ögcc£¬ÔÚMakefileÀïÕâÁ½¸öµÄÓï¾äÒ²ÊÇ·Ö±ðÕ¼1Ðеġ£
ÕâÀï×îÖ÷ÒªµÄÊÇ·¾¶µÄÎÊÌ⣬ÒòΪ²»Í¬µÄÎļþÔÚ²»Í¬µÄĿ¼ÏÂÃæ£¬ËùÒÔÒª¸æËß³ÌÐòÎļþËùÔڵķ¾¶£¬¶øÓÖÓÐÁ½¸ö³ÌÐòÐèÒª¸æÖª£¬¶øÁ½¸ö³ÌÐò¸æÖªµÄ·½Ê½ÓÖ²»Í¬£¬ËùÒÔÕâ¸öÎÊÌâÒ»¿ªÊ¼À§ÈÅÁËÎҺþã¬ÔںöàºÃÐÄÈ˵İïÖúÏ£¬ÖÕÓÚÃ÷°×ÁËÒ»µã¡£
makeµÄËÑË÷·¾¶ÉèÖ÷½Ê½Îª£ºvpath»òVPATH£¬Õâ¸öÔÚÐí¶à×ÊÁÏÀï¶¼½²¹ý£¬¶øÇÒÕâ¸öÊÇËùÓÐÎļþ¶¼¿ÉÒÔÉèÖõģ¬.c, .h»¹ÓÐÆäËüµÄ¶¼¿ÉÒÔ¡£
gccµÄËÑË÷·¾¶ÉèÖ÷½Ê½Îª£¨Õâ¸öÓ¦¸ÃÊÇÖ»ÄÜÉèÖÃÍ·ÎļþµÄËÑË÷·¾¶£¬ÒòΪÊÇinclude£©£º-I inc£¬
¶ø.cÎļþµÄËÑË÷·¾¶Ëƺõ²»ÄÜÉèÖ㬶øÖ»ÄÜÔÚcc -c path/%.cÖÐÏÔʾµÄд³ö£¬¸öÈËÕâôÀí½â¡£
¶øÓÐÒ»ÖÖ·½Ê½ÊÇ¿ÉÒÔ²»ÓÃÏÔʾµÄд³öµÄ£¬¶øÇÒÒ²²»Óðɣ¬%.cҲд³ö£¬¾ÍÊÇÓÃmakeµÄ×Ô¶¯»¯±äÁ¿¡£
“$<”ºÍ“$@”ÔòÊÇ×Ô¶¯»¯±äÁ¿£¬“$<”±íʾËùÓеÄÒÀÀµÄ¿±ê¼¯£¨%.c£©£¬“$@”±íʾĿ±ê¼¯£¨%.o£©¡£
(ÊÇmakeµÄ±äÁ¿£¬ÎļþÔÚµ±Ç°Ä¿Â¼Ã»ÓÐÕÒµ½µÄ»°£¬»á×Ô¶¯ËÑË÷vpathÖÐÉèÖõÄ·¾¶£¬Èç¹û²»ÓÃÕâ¸öÄÇôÈç¹û.cÔÚ²»ÔÚµ±Ç°Ä¿Â¼Ï£¬-cºóÃæÒªÖ¸Ã÷Ŀ¼λÖã¬ÓÃÕâ¸öºó£¬¿ÉÒÔÔÚvpathÖÐÖ¸Ã÷¼´¿É£©
ÒòΪÊÇmakeµÄ±äÁ¿£¬ËùÒÔÓÃvpathÉèÖõÄmakeµÄ·¾¶ÔÚÕâÀïÃæ¾ÍÆð×÷ÓÃÁË£¬²»ÓÃÔÙÏÔʾµÄÖ¸Ã÷.cµÄ·¾¶ÁË¡£¶øÇÒÕâÑùдÆðÀ´£¬¸ü¼ò½à¡£
×î½üÔÚ¿´¡¶ÉîÈëÀí½â¼ÆËã»úϵͳ¡·ÍøÉÏÏÂÔØµÄ´úÂë¶¼ÊÇÔÚLinuxÉÏÅܵģ¬ºÇºÇ£¬ËùÒÔµÃ×Ô¼ºÐ´Makefile£¬ËùÒÔ£¬Ñо¿ÁËһϣ¬ÖÕÓÚÕûÃ÷°
Ïà¹ØÎĵµ£º
ÔÚLINUX»·¾³¿ª·¢Çý¶¯³ÌÐò£¬Ê×ÏÈҪ̽²âµ½ÐÂÓ²¼þ£¬½ÓÏÂÀ´¾ÍÊÇ¿ª·¢Çý¶¯³ÌÐò¡£
³£ÓÃÃüÁîÕûÀíÈçÏ£º
ÓÃÓ²¼þ¼ì²â³ÌÐòkudzu̽²âÐÂÓ²¼þ£ºservice kudzu start ( or restart)
²é¿´CPUÐÅÏ¢£ºcat /proc/cpuinfo
²é¿´°å¿¨ÐÅÏ¢£ºcat /proc/pci
²é¿´PCIÐÅÏ¢£ºlspci (Ïà±Ècat /proc/pci¸üÖ±¹Û£©
²é¿´ÄÚ´æÐÅÏ¢ ......
ÔÚ½øÈëÕýÎÄǰÏÈ¿´Ò»ÏÂÎÒÔÚÍøÉÏ¿´µ½µÄÌû×Ó£º
ÎÊ£ºatomic_set(v,i)µÄ¶¨ÒåÊÇÕâÑùµÄ:
#define atomic_set(v,i) v->counter=i
µ«ÊÇ£¬ÔÚi386Ìåϵ½á¹¹ÖУ¬²»ÄÜÖ±½Ó°ÑÒ»¸öÄÚ´æ²Ù×÷Êýͨ¹ýÒ»ÌõmovÖ¸Áî´æµ½ÁíÒ»¸öÄÚ´æ²Ù×÷ÊýÖУ¬
±ÈÈçÒª°Ñint32ÀàÐ͵ıäÁ¿ i ÉèÖÃ³É j£¬±ØÐë¾¹ýÁ½ÌõÖ¸Áî:
mov eax,j
mov i,eax
Èç¹ûÕâÑùÀ ......
googleÔõÑùʹÓÃlinux£¨Äںˣ©
½ñÄêµÄlinuxÄں˿ª·¢´ó»áÉÏ£¬googleµÄ¿ª·¢ÈËÔ±Ò²ÉĮ̈×öÁËÃûΪ“how google use linux"µÄÑݽ²¡£ÎÒ¶·µ¨·Òë×¢½âÒ»·¬——À¨ºÅÄÚΪע½â£¬»¶Ó¶ÁÕ߸«Õý¡£
£¨Ç°Ã漸¶Î½²google¶Ôlinux kernel´úÂëµÄ¹ÜÀí¼°¸ú½ø£¬Æ«Ï¸Ë飬²»·ÒëÁË£©
ÔÚgoogleΪlinux¼ÓÈëµÄ´úÂëÖУ¬3/4ÊǶÔÄں˺ËÐÄ ......
×îÔç½Ó´¥LinuxÄÚºËÊÇÔÚ´óÈýµÄʱºò£¬ÄÇʱ¡¶²Ù×÷ϵͳ¡·µÄ¿Î³ÌÉè¼Æ¾ÍÊǽøÐÐLinuxÄÚºËÔ´´úÂëµÄ·ÖÎöÓë½ø³Ìµ÷¶ÈµÄ¸Ä½ø¡£ÌâÄ¿ÊÇ´óµÄÓеãÏÅÈË£¬ÌØ
±ðÊǶÔÄÇʱһ¸öÉæ×ãδÉîµÄÄêÇáÈË¿´À´¡£²»¹ýÄÇʱ×öµÄÊÂÇéºÜ¼òµ¥£¬ÈÏÈÏÕæÕæµÄ¿´ÁË¡¶LinuxÄÚºËÔ´´úÂëÇé¾°·ÖÎö¡·µÄǰÑÔ²¿·Ö£¨Ö÷Òª½²µÄAT&T»ã
±àÓïÑÔ£¬ÄÚºËÖÐÒ»Ð©ÌØÊâµÄ±à³Ì¹æÔò£©£¬Ó ......
½ñÌì¿´µ½Ê¦ÐÖ¹¤Î»ÉÏÓб¾Linux Kernel In a Nutshell£¬»¹ÊÇȫӢµÄÓ°Ó¡°æ£¬ËùÒԾͽè¹ýÀ´¿´¿´£¬·¢ÏÖÏÖÔÚ¿´Ó¢ÎĵÄÊé½¥½¥ÊÊÓ¦ÁË£¬»¹ÊDZȽÏÈÝÒ׵ģ¬ÊéÖпªÊ¼½éÉÜÈçºÎ±àÒëLinuxÄںˣ¬LinuxÄں˴óÈýµÄʱºòҲѧ¹ý±àÒë¹ý£¬µ«Êǵ±Ê±±àÒë±È½Ï¼òµ¥£¬Õâ´Î¾ö¶¨ÔÙÖØÍ·µ½Î²ºÃºÃ±àÒëһϣ¬Ê×ÏÈÏÂÔØlinux kernel£¬ÔÙÓÃsecureCRTÉÏ´«µ½Ubuntu 8. ......