LinuxÖÐ ¾²Ì¬¿âºÍ¹²Ïí¿â
1£® ´´½¨Ä¿Â¼
mkdir –p test/sub
2£® ÔÚ×ÓĿ¼sub/ϱàдhello.cºÍhello.h
/*****hello.c*****/
#include <stdio.h>
#include “hello.h”
void hello()
{
printf(“Hello!\n”);
}
/*****hello.h*****/
#include <stdio.h>
void hello();
3£® ±àÒëÁ´½Ó/´ò°ü
gcc –c hello.c –o hello.o
ar cqs libhello.a hello.o
4£® ÔÚÖ÷Ŀ¼test/ϱàдmain.c
#include <stdio.h>
#include “sub/hello.h”
int main()
{
hello();
retrun 0;
}
5£® ±àÒëÁ´½Ó
gcc –c main.c –o main.o
gcc main.o –o main.exe –L “sub/” –lhello #dynamically linked (uses shared libs)
»ògcc main.o –o main.exe –static –L “sub/” –lhello # statically linked
--------------------------------------------------------------------------------------------------
.a(archive) ¾²Ì¬¿â
.so(shared object) ¹²Ïí¿â
¾²Ì¬¿âÖ»ÔÚ³ÌÐòÁ´½ÓʱÆð×÷Óã¬×îÖÕµÄÖ´ÐгÌÐòÍÑÀ뾲̬¿âÔËÐС£
¹²Ïí¿âÔÚ³ÌÐòÔËÐÐʱÆð×÷Óá£
--------------------------------------------------------------------------------------------------
¹²Ïí¿âµÄ±àºÅÔ¼¶¨
¸ñʽlibrary_name.major_num.minor_num.patch_num
ÀýÈçlibminigui.so.2.0.0
major_num:µ±¿âµÄ±ä»¯´ïµ½Á˺ÍÒÔǰµÄ°æ±¾²»ÄܼæÈݵijɶ¼Ê±¾ÍÒªÔö¼ÓÖ÷°æ±¾ºÅ
minor_num:µ±¿âÓÐÁËб仯ÓÖÄܺÍÒÔǰµÄ°æ±¾±£³Ö¼æÈÝʱ¾ÍÖ»¸Ä±ä´Î°æ±¾ºÅ
patch_num:ΪÐÞÕý¿âÖеĴíÎó¶ø½øÐеĸ͝Ôò»á¸Ä±ä²¹¶¡¼¶±ðºÅ£¬ËüÓÖ½Ð×ö·¢ÐкÅ(release number)¡£
ÒÔ_gºÍ_p½áβµÄ¿â£º
ÀýÈçlibminigui_g.aºÍlibminigui_p.a
Ëü
ÃÇÊÇ»ù±¾¿âµÄÌØÊâ°æ±¾£¬»ù±¾¿âΪlibminigui.a¡£ÒÔ_g½áβµÄ¿âÊǵ÷ÊԿ⣬±àÈëÁËÌØÊâµÄ·ûºÅºÍ¹¦ÄÜ£¬Ôö¼ÓÁ˶ԲÉÓÃÁËÕâ¸ö¿âµÄÓ¦ÓóÌÐòµÄµ÷ÊÔ¹¦
ÄÜ¡£ÒÔ_p½áβµÄ¿âÊÇ´úÂëÆÊÎö¿â(profiling)£¬ËüÃǰüº¬µÄ´úÂëºÍ·ûºÅÄܽøÐи´ÔӵĴúÂëÆÊÎöºÍÐÔÄÜ·ÖÎö¡£ÄãÈç¹ûʹÓÃÁËÕâÁ½Àà¿â£¬Ò»µ©Íê³ÉÁ˵÷ÊÔºÍ
ÆÊÎ
Ïà¹ØÎĵµ£º
ÎÄÕÂѡȡµÄÀý×ӷdz£¼òµ¥£¬ÉÏÊÖÈÝÒ×£¬Ö»ÊÇΪÁ˽²Êö¾²Ì¬Ó붯̬Á´½Ó¿âµÄÉú³ÉºÍÁ´½Ó¹ý
³Ì£¬»¹ÓÐËûÃÇÖ®¼äµÄÇø±ð¡£ÒÔÏÂÀý×ÓÔÚ gcc 4.1.1 ÏÂ˳Àûͨ¹ý¡£
ÎļþÔ¤ÀÀ
ÎļþĿ¼Ê÷ÈçÏ£¬ÈçÄãËù¼û£¬·Ç³£¼òµ¥¡£
libtest/
|-- lt.c
|-- lt.h
`-- test. ......
ÓɲÙ×÷ϵͳʵÏÖµÄËùÓÐϵͳµ÷ÓÃËù¹¹³ÉµÄ¼¯ºÏ¼´³ÌÐò½Ó¿Ú»òÓ¦Óñà³Ì½Ó¿Ú(Application Programming Interface£¬API)¡£ÊÇÓ¦ÓóÌÐòͬϵͳ֮¼äµÄ½Ó¿Ú¡£
¡¡¡¡²Ù×÷ϵͳµÄÖ÷Òª¹¦ÄÜÊÇΪӦÓóÌÐòµÄÔËÐд´½¨Á¼ºÃµÄ»·¾³£¬ÎªÁË´ïµ½Õâ¸öÄ¿µÄ£¬ÄÚºËÌṩһϵÁо߱¸Ô¤¶¨¹¦ÄܵĵÄÄں˺¯Êý£¬Í¨¹ýÒ»×é³ÆÎªÏµÍ³µ÷Óõģ¨system call)µÄ½Ó¿Ú³ÊÏÖ¸øÓà ......
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <s ......
/******************************
*
* server.c
*
******************************/
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<errno.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/wait.h> ......
/***********************************
*
*client.c
*
**********************************/
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<sy ......