1.浣跨敤write鍚? 1 2 鍐欐暟鎹?/span>
2.浣跨敤read浠? 1 璇誨彇鏁版嵁,騫跺垽瀹氳緭鍏ョ殑鎯呭喌,鐒跺悗鏍規嵁鐩稿簲鐨勭粨鏋滆緭鍑烘彁紺?br />
#include <stdlib.h>
#include <stdio.h>
main()
{
//printf("%d\n",getpid());
//while(1);
/*
int r=write(0,"Hello\n",6);
write(1,"world\n",6);
write(2,"louis\n",6);
int a=20;
write(1,&a,4);
*/
char buf[32];
//memset(buf,0,32);
bzero(buf,32);
int r=read(0,buf,30);
printf("瀹為檯杈撳叆:%d\n",r);
if(r>0)
{
buf[r]=0;
printf("::%s\n",buf);
}
if(r==0)
{
printf("ctrl+d\n");
}
if(r==-1)
{
printf("杈撳叆閿欒!\n");
}
}
涓?鍩轟簬鏂囦歡鐨勬弿榪扮鍙?br style="margin: 0px; padding: 0px;" /> 1.寰楀埌鏂囦歡鎻忚堪絎﹀彿/閲婃斁鏂囦歡鎻忚堪絎﹀彿
a.鏂囦歡綾誨瀷
鐩綍鏂囦歡d
鏅氭枃浠秄
瀛楃璁懼鏂囦歡c
鍧楄澶囨枃浠禸
杞繛鎺ユ枃浠秎
綆¢亾鏂囦歡p
socket鏂囦歡s
b.鏂囦歡鐨勫睘鎬?br style="margin: 0px; padding: 0px;" /> 1.灞炴х殑琛ㄨ揪鏂瑰紡:緇濆妯″紡錛?666綾諱技鐨勫叓榪涘埗鏁幫級,瀛楃妯″紡錛坮wx錛?br style="margin: 0px; padding: 0px;" /> 0 0 0 0
鎷ユ湁鑰?nbsp; 緇?nbsp; 鍏朵粬鐢ㄦ埛
0666
2.鏂囦歡鐨勬潈闄愬睘鎬?
璇?br style="margin: 0px; padding: 0px;" /> 鍐?br style="margin: 0px; padding: 0px;" /> 鎵ц
綺橀檮浣嶆潈闄?br style="margin: 0px; padding: 0px;" /> 鐢ㄦ埛璁劇疆浣嶆潈闄?br style="margin: 0px; padding: 0px;" /> 緇勮緗綅鏉冮檺
0 0 0 0 0
鐗規畩鏉冮檺 Owner group 鍏朵粬鐢ㄦ埛
s:
S
t
T
2.1. s璁劇疆浣?br style="margin: 0px; padding: 0px;" /> 2:緇勮緗綅
4:鐢ㄦ埛璁劇疆浣?br style="margin: 0px; padding: 0px;" /> s瀵規墽琛屾湁鏁?br style="margin: 0px; padding: 0px;" /> 鏃犳晥鐨勮緗綅浣跨敤S琛ㄧず
璁劇疆浣嶅悜鍏朵粬鐢ㄦ埛寮鏀炬嫢鏈夎呮潈闄愮殑鏉冮檺.鐢ㄦ埛璁劇疆浣?br style="margin: 0px; padding: 0px;" /> 璁劇疆浣嶅悜鍏朵粬鐢ㄦ埛寮鏀劇粍鐢ㄦ埛鏉冮檺鐨勬潈闄?緇勭敤鎴瘋緗綅
璁劇疆浣嶅彧瀵規墽琛岀▼搴忔湁鎰忎箟(鎵ц鏉冮檺鏈夋剰涔?
2.2. t璁劇疆浣?br style="margin: 0px; padding: 0px;" /> 1:琛ㄧず娌鵑檮浣嶈緗?br style="margin: 0px; padding: 0px;" /> t瀵瑰啓鏂囦歡鏈夋剰涔?br style="margin: 0px; padding: 0px;" /> 娌℃湁鎵ц鏉冮檺鐨勬簿闄勪綅浣跨敤T琛ㄧず.
娌鵑檮鐨勭洰鐨?闃叉鏈変簺鏉冮檺鐨勭敤鎴峰垹闄ゆ枃浠?
紼嬪簭鍦ㄦ墽琛岀殑鏃跺欏埌搴曟嫢鏈夌殑鏄墽琛岃呯敤鎴風殑鏉冮檺
榪樻槸鏂囦歡鎷ユ湁鑰呯殑鏉冮檺.(鐪媠etUID)
紼嬪簭鎵ц涓湁涓や釜鐢ㄦ埛:
瀹為檯鐢ㄦ埛錛氭爣紺鴻繘紼嬪埌搴曟槸璋?br style="margin: 0px; padding: 0px;" /> 鏈夋晥鐢ㄦ埛錛氭爣紺鴻繘紼嬭闂祫婧愮殑鏉冮檺
涓婅堪涓鑸儏鍐墊槸涓鏍風殑錛屾湁鏃跺欒setUID鏀瑰彉
鎬葷粨:
娌鵑檮浣嶇殑浣滅敤: 闃叉鍏朵粬鏈夊啓鏉冮檺鐢ㄦ埛鍒犻櫎鏂囦歡
璁劇疆浣嶇殑浣滅敤: 鍚戝叾浠栨墽琛岃呭紑鍙戠粍鎴栬呯敤鎴風殑鏉冮檺.
緇冧範:
1.浣跨敤cat鍒涘緩涓涓枃浠?br style="margin: 0px; padding: 0px;" /> 2.璁劇疆娌鵑檮浣?騫惰瀵熷睘鎬?br style="margin: 0px; padding: 0px;" /> 3.璁劇疆鐢ㄦ埛璁劇疆浣? 騫惰瀵熷睘鎬?br style="margin: 0px; padding: 0px;" /> 4.璁劇疆緇勮緗綅, 騫惰瀵熷睘鎬?br style="margin: 0px; padding: 0px;" /> 5.鑰冭檻w鏉冮檺涓庢簿闄勪綅鐨勫叧緋?br style="margin: 0px; padding: 0px;" /> 6.鑰冭檻x鏉冮檺涓庤緗綅鐨勫叧緋?
2.閫氳繃鏂囦歡鎻忚堪絎﹀彿璇誨啓鍚勭鏁版嵁.
open鍑芥暟涓巆reat鍑芥暟
int open(
const char *filename,//鏂囦歡鍚?/span>
int flags,//open鐨勬柟寮廩鍒涘緩/鎵撳紑]
mode_t mode//鏉冮檺(鍙湁鍒涘緩鐨勬椂鍊欐湁鏁?
)
榪斿洖:
>=0:鍐呮牳鏂囦歡鎻忚堪絎﹀彿.
=-1:鎵撳紑/鍒涘緩澶辮觸
open鐨勬柟寮?
蹇呴夋柟寮?O_RDONLY O_WRONLY O_RDWR,蹇呴』閫夋嫨涓涓?br style="margin: 0px; padding: 0px;" /> 鍒涘緩/鎵撳紑:O_CREAT
鍙夋柟寮?
瀵規墦寮鍙夋柟寮?O_APPEND O_TRUNC(娓呯┖鏁版嵁)
瀵瑰垱寤哄彲閫夋柟寮?O_EXCL
緇勫悎:
鍒涘緩:
O_RDWR|O_CREAT
O_RDWR|O_CREAT | O_EXCL
鎵撳紑:
O_RDWR
O_RDWR|O_APPEND
O_RDWR|O_TRUNC
鏉冮檺:
寤鴻浣跨敤8榪涘埗鏁?br style="margin: 0px; padding: 0px;" /> 鍏抽棴
void close(int fd);
妗堜緥1:
鍒涘緩鏂囦歡
妗堜緥2:
鍒涘緩鏂囦歡騫跺啓鍏ユ暟鎹?br style="margin: 0px; padding: 0px;" /> 20 short float
tom 20 99.99
bush 70 65.00
杈懼唴 40 100.00
娉ㄦ剰:
鏂囦歡鐨勫垱寤虹殑鏉冮檺鍙楃郴緇熺殑鏉冮檺灞忚斀鐨勫獎鍝?br style="margin: 0px; padding: 0px;" /> umask //鏄劇ず灞忚斀鏉冮檺.
umask 0666 //璁劇疆鏉冮檺灞忚斀.
ulimit -a 鏄劇ず鎵鏈夌殑鍏朵粬闄愬埗.
/*鍒涘緩鏂囦歡*/
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
int fd;
char name[20];
short age;
float score;
char sex;
fd=open("test.dat",
O_RDWR|O_CREAT|O_EXCL,
);
if(fd==-1) printf("open error:%m\n"),exit(-1);
//鍐欑涓鏉?/span>
memcpy(name,"tom",strlen("tom")+1);
age=20;
score=99.99;
sex='F';
write(fd,name,sizeof(name));
write(fd,&age,sizeof age);
write(fd,&score,sizeof(float));
write(fd,&sex,sizeof(sex));
//鍐欑浜屾潯
memcpy(name,"Bush",strlen("Bush")+1);
age=70;
score=65.00;
sex='M';
write(fd,name,sizeof(name));
write(fd,&age,sizeof age);
write(fd,&score,sizeof(float));
write(fd,&sex,sizeof(sex));
//鍐欑涓夋潯
memcpy(name,"杈懼唴",strlen("杈懼唴")+1);
age=10;
score=99.00;
sex='F';
write(fd,name,sizeof(name));
write(fd,&age,sizeof age);
write(fd,&score,sizeof(float));
write(fd,&sex,sizeof(sex));
close(fd);
}
妗堜緥3:
鎵撳紑鏂囦歡璇誨彇鏁版嵁
閲嶇偣:
鎬庝箞鎵撳紑璇誨彇
鏂囦歡灝劇殑鍒ゅ畾
鍩烘湰綾誨瀷鐨勬暟鎹鍐?
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
main()
{
char name[20];
short age;
float score;
char sex;
int fd;
int r;
fd=open("test.dat",O_RDONLY);
if(fd==-1) printf("open error:%m\n"),exit(-1);
while(1)
{
r=read(fd,name,sizeof(name));
if(r==0) break;
r=read(fd,&age,sizeof(short));
r=read(fd,&score,sizeof(float));
r=read(fd,&sex,sizeof(sex));
printf("%s,\t%4hd,\t%.2f,\t%1c\n",
name,age,score,sex);
}
close(fd);
}
妗堜緥4:
緇撴瀯浣撹鍙?/span>
鎻忚堪:浠庨敭鐩樿鍙栬嫢騫叉潯鏁版嵁,淇濆瓨鍒版枃浠?/span>
鏁版嵁榪藉姞
View Code
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
struct stu
{
int no;
char name[20];
float score;
};
/*
.鍒ゅ畾鏂囦歡鏄惁瀛樺湪,瀛樺湪鎵撳紑錛屼笉瀛樺湪鍒涘緩
.杈撳叆璁板綍
.淇濆瓨璁板綍
.鎻愮ず緇х畫杈撳叆
.緇х畫/涓嶇戶緇?br />.鍏抽棴鏂囦歡
*/
int openfile(const char *filename)
{
int fd;
fd=open(filename,O_RDWR|O_CREAT|O_EXCL,0666);
if(fd==-1)//琛ㄧず鏂囦歡瀛樺湪,鍒欐墦寮
{
fd=open(filename,O_RDWR|O_APPEND);
return fd;
}
return fd;
}
void input(struct stu *record)
{
bzero(record,sizeof(struct stu));
printf("杈撳叆瀛﹀彿:");
scanf("%d",&(record->no));
printf("杈撳叆濮撳悕:");
scanf("%s",record->name);
printf("杈撳叆鎴愮嘩:");
scanf("%f",&(record->score));
}
void save(int fd,struct stu *record)
{
write(fd,record,sizeof(struct stu));
}
int iscontinue()
{
char c;
printf("鏄惁緇х畫杈撳叆:\n");
//fflush(stdin);
//fflush(stdout);
scanf("\n%c",&c);
if(c=='Y' || c=='y')
{
return 1;
}
return 0;
}
int main()
{
int fd;
int r;
struct stu s={0};
fd=openfile("stu.dat");
if(fd==-1) printf("openfile:%m\n"),exit(-1);
while(1)
{
input(&s);
save(fd,&s);
r=iscontinue();
if(r==0) break;
system("clear");
}
close(fd);
printf("杈撳叆瀹屾瘯!\n");
}
3.鏂囦歡鎻忚堪絎﹀彿涓庨噸瀹氬悜
1.鍒ゅ畾鏂囦歡鎻忚堪絎﹀彿涓庣粓绔殑閭﹀畾鍏崇郴
int isatty(int fd)
榪斿洖闈?:fd杈撳嚭緇堢
0:fd杈撳嚭琚噸瀹氬悜
2.闃叉閲嶅畾鍚?/span>
/dev/tty
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int fd;
printf("Hello\n");
write(1,"World\n",6);
fd=open("/dev/tty",O_WRONLY);
if(isatty(1))
{
write(1,"notredir\n",9);
}
else
{
write(1,"redir\n",6);
}
write(fd,"Killer\n",7);
}
鎬葷粨:
1.make鐨勫鐩爣渚濊禆瑙勫垯浠ュ強浼洰鏍?br style="margin: 0px; padding: 0px;" /> 2.鏂囦歡鐨勫垱寤轟笌鎵撳紑(浜嗚В璁劇疆浣嶇殑浣滅敤)
3.鏂囦歡鐨勮鍐?瀛楃涓?鍩烘湰綾誨瀷/緇撴瀯浣?
4.浜嗚В鎻忚堪絎﹀彿涓庨噸瀹氬悜
浣滀笟:
1.瀹屾垚涓婅鐨勭粌涔?
2.鍐欎竴涓▼搴忎嬌鐢ㄧ粨鏋勪綋璇誨彇1縐嶇殑鏁版嵁,
騫跺叏閮ㄦ墦鍗版暟鎹?
騫舵墦鍗板鉤鍧囨垚緇?br style="margin: 0px; padding: 0px;" /> 3.鍐欎竴涓▼搴?
鏌ヨ1縐嶇殑鏁版嵁.姣斿:杈撳叆濮撳悕,鏌ヨ鎴愮嘩
4.鍐欎竴涓▼搴?褰曞叆淇濆瓨濡備笅鏁版嵁:
涔﹀悕 鍑虹増紺?nbsp; 浠鋒牸 瀛樺偍閲?nbsp; 浣滆?nbsp;
5.鍐欎竴涓▼搴忚礋璐f枃浠舵嫹璐?br style="margin: 0px; padding: 0px;" /> main 瀛樺湪鐨勬枃浠?nbsp; 鏂扮殑鏂囦歡鍚?br style="margin: 0px; padding: 0px;" /> 瑕佹眰:
鏂囦歡瀛樺湪灝辨嫹璐?涓嶅瓨鍦ㄦ彁紺洪敊璇?

]]>- linux楂樼駭緙栫▼day02 絎旇 (杞?http://m.shnenglu.com/mysileng/archive/2012/12/27/196708.html閼緳閼緳Thu, 27 Dec 2012 05:27:00 GMThttp://m.shnenglu.com/mysileng/archive/2012/12/27/196708.htmlhttp://m.shnenglu.com/mysileng/comments/196708.htmlhttp://m.shnenglu.com/mysileng/archive/2012/12/27/196708.html#Feedback0http://m.shnenglu.com/mysileng/comments/commentRss/196708.htmlhttp://m.shnenglu.com/mysileng/services/trackbacks/196708.html緇存姢涓涓綅緗?brk/sbrk鏀瑰彉榪欎釜浣嶇疆銆?br />brk鏀瑰彉緇濆浣嶇疆
sbrk鏀瑰彉鐩稿浣嶇疆
鏄ㄥぉ鐨勮ˉ鍏咃細
姘歌繙璁頒綇錛欳鐨勫熀鏈被鍨嬪氨閭e嚑縐嶃?br />鎵鏈夊叏鏂扮被鍨嬮兘鏄嬌鐢╰ypedef閲嶆柊瀹氫箟鐨勩?br />綾誨瀷閲嶅畾涔夌殑濂藉錛?br />1. 緇存姢鏂逛究
2. 渚夸簬縐繪錛堟瘡涓郴緇熶腑閮界敤鍚屼竴涓悕錛屼笉鐢ㄤ慨鏀癸級
3. 瀹規槗鐞嗚В
涓銆?鏄犲皠铏氭嫙鍐呭瓨
娌℃湁浠諱綍棰濆緇存姢鏁版嵁鐨勫唴瀛樺垎閰?mmap/munmap
1. 鍑芥暟璇存槑錛?br />
void *mmap(
void *start, //鎸囧畾鏄犲皠鐨勮櫄鎷熷湴鍧錛屽鏋滀負0錛屽垯鐢辯郴緇熸寚瀹氬紑濮嬩綅緗?/span>
size_t length,//鎸囧畾鏄犲皠絀洪棿鐨勫ぇ灝忋?nbsp;pagesize鐨勫嶆暟
int prot, //鏄犲皠鐨勬潈闄?nbsp;PROT_NONE PROT_READ PROT_WRITE PROT_WRITE PROT_EXEC
int flags, //鏄犲皠鐨勬柟寮?/span>
int fd, //鏂囦歡鎻忚堪絎﹀彿
offset_t off //鏂囦歡涓殑鏄犲皠寮濮嬩綅緗紙蹇呴』鏄?鎴杙agesezi鐨勫嶆暟錛?/span>
);
鍏充簬鏄犲皠鐨勬柟寮廸lags錛?br />鍐呭瓨鏄犲皠錛氬張鍙尶鍚嶆槧灝勶紝鏈鍚庝袱涓弬鏁版棤鏁?br />鏂囦歡鏄犲皠錛氭槧灝勫埌鏌愪釜鏂囦歡
鍙湁鏂囦歡鏄犲皠錛屾渶鍚庝袱涓弬鏁版墠鏈夋晥
MAP_ANONYMOUS:鍐呭瓨鏄犲皠
MAP_SHAREDMAP_PRIVATE錛氫簩閫変竴錛屾枃浠舵槧灝?br />
2. 妗堜緥錛?br />
#include <unistd.h>
#include <sys/mman.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
int *p = mmap(
NULL,
getpagesize(),
PROT_READ|PROT_WRITE,
MAP_ANONYMOUS|MAP_SHARED,
0,
0);
*P = 20;
*(p+1) = 30;
*(p+2) = 40;
printf("%d\n", p[2]); //鎵撳嵃鍑?0
munmap(p, 4096);
}
3. 鎬葷粨錛?br /> 閫夋嫨浠涔堟牱鐨勫唴瀛樼鐞嗘柟娉曪紵
STL
new
malloc灝忚屽鐨勬暟鎹?br /> brk/sbrk鍚岀被鍨嬬殑澶у潡鏁版嵁錛屽姩鎬佺Щ鍔ㄦ寚閽?br /> mmap/munmap 鎺у埗鍐呭瓨鐨勮闂?浣跨敤鏂囦歡鏄犲皠/鎺у埗鍐呭瓨鍏變韓
浜屻佺紪紼嬪伐鍏蜂笌鍔ㄦ佸簱
1. gcc
2. make
3. gdb
4. 鍏朵粬宸ュ叿
5. 鍔ㄦ佸簱錛堝叡浜簱錛?br />
1. gcc
-o 杈撳嚭鏂囦歡鍚?br /> -O-O1-O2-O3//緙栬瘧浼樺寲
-g-g1-g2-g3//浜х敓璋冭瘯淇℃伅
-Wallerror//-Wall 鏄劇ず鎵鏈夎鍛?Werror 灝嗚鍛婂綋鎴愰敊璇彁紺?br /> -w//鍏抽棴鎵鏈夎鍛?br /> -c//鍙紪璇戜笉榪炴帴錛屼駭鐢?.o鏂囦歡錛堢洰鏍囨枃浠訛級
-E//棰勭紪璇?br /> -S//姹囩紪銆?浜х敓 .s鏂囦歡錛堟眹緙栨枃浠訛級
緙栬瘧4榪囩▼鏄?-E(浜х敓.i) -c(浜х敓.o) -S(浜х敓.s) 鑷姩璋冪敤榪炴帴鍣?/span>ld
-D//鍦ㄥ懡浠よ瀹氫箟瀹?錛堝畯鍙互鍦ㄤ唬鐮佷腑瀹氫箟錛屼篃鍙互鍦ㄥ懡浠よ涓婂畾涔夛級
-x//鎸囧畾緙栬瘧鐨勮璦綾誨瀷 C, C++, .S(姹囩紪)錛?none錛堣嚜鍔ㄥ垽瀹氾級
-std=c89 浣跨敤鏍囧噯C89
-std=c99 浣跨敤鏍囧噯C99
涓夈?闈欐佸簱鐨勭紪璇?br />1. 緙栬瘧榪囩▼ 錛?.a錛?a鏄痑chieve鐨勭緝鍐?br /> 1.1 緙栬瘧鎴愮洰鏍囨枃浠?br /> -static 鍙?br /> gcc -c -static 浠g爜鏂囦歡.c //鐢熶駭鍙敤浜庡綊妗g殑鐩爣浠g爜:浠g爜鏂囦歡.0
1.2 褰掓。鎴愰潤鎬佸簱
ar宸ュ叿 錛堝父鐢?r -t閫夐」錛?br /> ar -r 闈欐佸簱 琚綊妗g殑鏂囦歡鍚?涓婁竴姝ヤ唬鐮佹枃浠?o)
ar -r add.a add.o
nm宸ュ叿錛堟煡鐪嬪簱涓墍钑村惈鐨勫嚱鏁板垪琛級
nm 闈欐佸簱鎴栧姩鎬佸簱鎴栫洰鏍囨枃浠舵垨鎵ц鏂囦歡
1.3 浣跨敤闈欐佸簱
gcc 浠g爜鏂囦歡 闈欐佸簱
灝忎緥瀛愶細
浣跨敤闈欐佸簱瀹屾垚濡備笅紼嬪簭
杈撳叆涓涓彵褰㈠崐寰勶紝鎵撳嵃鑿卞艦
杈撳叆鏁村瀷灝佽鎴怚OTool
鑿卞艦鎵撳嵃灝佽鎴怗raphic
璁″垝錛?br />1. 瀹炵幇杈撳叆
2. 瀹炵幇鑿卞艦
3. 緙栬瘧闈欐佸簱
4. 璋冪敤闈欐佸簱
//iotool.c
#include <stdio.h>
int inputInt(const char *info)
{
int r; //榪斿洖鍊?/span>
printf("%s:", info);
scanf("%d", &r);
return r;
}
//graphic.c
#include <stdio.h>
void diamond(int r)
{
int x, y;
for(y=0; y<=2*r; y++)
{
for(x=0; x<=2*r; x++)
{
if(y == x+r || y == x-r ||y == -x+r || y == -x+3*r)
{
printf("*");
}
else
{
printf(" ");
}
}
printf("\n");
}
}
緙栬瘧錛?gcc -c -static iotool.c
gcc -c -static graphic.c
ar -r demo1.a iotool.o graphic.o
ar -t demo1.a //鐩稿綋浜巒m demo1.a
//main.c
main()
{
int r = inputInt("杈撳叆鑿卞艦鍗婂緞錛?);
diamond(r);
}
緙栬瘧: gcc main.c demo1.a -o main
鎵ц錛?/main
鎶婇潤鎬佸簱浣滀負浠g爜鐨勪竴閮ㄥ垎鏉ョ紪璇?br />
鎬葷粨錛?br />1. 浠涔堟槸搴擄紵
鍑芥暟絳変唬鐮佸皝瑁呯殑浜岃繘鍒跺凡緇忕紪璇戠殑褰掓。鏂囦歡
2. ar褰掓。宸ュ叿
3. 閲囩敤搴撶殑鏂瑰紡綆$悊浠g爜浼樼偣錛?br />瀹規槗緇勭粐浠g爜
澶嶇敤
淇濇姢浠g爜鐗堟潈
4. 闈欐佸簱鐨?#8220;闈欐?#8221;鐨勫惈涔夛細
緙栬瘧濂界殑紼嬪簭榪愯鐨勬椂鍊欎笉渚濊禆搴?br />搴撲綔涓虹▼搴忕殑涓閮ㄥ垎緙栬瘧榪炴帴
5. 闈欐佸簱鐨勬湰璐?/span>
灝辨槸鐩爣鏂囦歡鐨勯泦鍚堬紙褰掓。錛?/span>
6. -static鍙?br />
2. 搴撶殑瑙勮寖涓庣害瀹?br />搴撳懡鍚嶈鍒欙細
lib搴撳悕.a.涓葷増鏈彿.鍓増鏈彿.鎵瑰彿
涓鑸氨鍐?#8220;lib搴撳悕.a”灝辮浜嗐?br />ar -r libdemo2.a iotool.o graphic.o
搴撶殑浣跨敤瑙勫垯
-l搴撳悕
-L搴撴墍鍦ㄧ殑鐩綍
gcc main.c -o main -l demo2 -L.
鍥涖?鍔ㄦ佸簱鐨勭紪璇?br />1. 浠涔堟槸鍔ㄦ佸簱錛堝叡浜簱錛?br />鍔ㄦ佸簱鏄彲浠ユ墽琛岀殑錛岄潤鎬佸簱涓嶈兘鎵ц
浣嗗姩鎬佸簱娌℃湁main錛屼笉鑳界嫭绔嬫墽琛?br />鍔ㄦ佸簱涓嶄細榪炴帴鎴愮▼搴忕殑涓閮ㄥ垎
紼嬪簭鎵ц鏃訛紝蹇呴』闇瑕佸姩鎬佸簱鏂囦歡
2. 宸ュ叿
ldd鏌ョ湅紼嬪簭闇瑕佽皟鐢ㄧ殑鍔ㄦ佸簱 錛宭dd鍙兘鏌ョ湅鍙墽琛屾枃浠訛紙鍏變韓搴撴枃浠舵垨elf鏂囦歡錛?br />nm 錛堟煡鐪嬪簱涓殑鍑芥暟絎﹀彿錛?br />3. 鍔ㄦ佸簱鐨勭紪璇?br />3.1緙栬瘧
-c -f pic(鍙? (-f 鎸囧畾鏂囦歡鏍煎紡 pic 浣嶇疆鏃犲叧浠g爜)
3.2 榪炴帴
-shared
緙栬瘧錛歡cc -c -fpic iotool.c
gcc -c -fpic graphic.c
(闈炴爣鍑?gcc -shared -odemo3.so iotool.o graphic.o
(鏍囧噯)gcc -shared -olibdemo4.so iotool.o graphic.o
4. 浣跨敤鍔ㄦ佸簱
gcc 浠g爜鏂囦歡鍚?鍔ㄦ佸簱鏂囦歡鍚?br />gcc 浠g爜鏂囦歡鍚?-l搴撳悕 -L鍔ㄦ佸簱鎵鍦ㄧ殑璺緞
gcc main.c -ldemo4 -L. -o main
鏍囧噯鍛藉悕瑙勫垯錛?br />lib搴撳悕.so
lib搴撳悕.a
闂錛?br />4.1 鎵ц紼嬪簭鎬庝箞鍔犺澆鍔ㄦ佸簱錛?br />4.2 鍔ㄦ佸簱娌℃湁浣滀負鎵ц紼嬪簭鐨勪竴閮ㄥ垎錛屼負浠涔堣繛鎺ラ渶瑕佸埗瀹氬姩鎬佸簱鍙婄洰褰曪紵
鍥犱負榪炴帴鍣ㄩ渶瑕佺‘璁ゅ嚱鏁板湪鍔ㄦ佸簱涓殑浣嶇疆
鍔ㄦ佸簱鐨勫姞杞斤細
1. 鎵懼埌鍔ㄦ佸簱
2. 鍔犺澆鍔ㄦ佸簱鍒板唴瀛橈紙緋葷粺瀹炵幇錛?br />3. 鏄犲皠鍒扮敤鎴風殑鍐呭瓨絀洪棿錛堢郴緇熷疄鐜幫級
鍔ㄦ佸簱鏌ユ壘瑙勫垯錛?br />/lib
/user/lib
LD_LIBRARY_PATH鐜鍙橀噺鎸囧畾鐨勮礬寰勪腑鎵?br />璁劇疆褰撳墠璺緞涓虹幆澧冨彉閲忥細錛?span style="color: red;">鑷繁瀹氫箟鐨勫簱鏈濂借緗ソ鐩綍錛屾垨鑰呮斁鍒頒笂榪板叕鍏辯洰褰曪級
export LD_LIBRARY_PATH=.:~:..:~Walle
緙撳啿鏈哄埗錛?br />緋葷粺鎶妉ib:/user/lib:LD_LIBRARY_PATH閲岀殑鏂囦歡鍔犺澆鍒扮紦鍐?br />/sbin/ldconfig -v 鍒鋒柊緙撳啿so涓殑鎼滅儲搴撶殑璺緞
灝忕粌涔狅細
杈撳叆涓や釜鏁幫紝璁$畻涓や釜鏁扮殑鍜屻?br />瑕佹眰錛氳緭鍏ヤ笌璁$畻涓や釜鏁扮殑鍜屽皝瑁呮垚鍔ㄦ佸簱璋冪敤
浜斻?浣跨敤libdl.so搴?br />鍔ㄦ佸簱鍔犺澆鍘熺悊
鍔ㄦ佸簱涓嚱鏁扮殑鏌ユ壘宸茬粡灝佽鎴愬摥libdl.so
libdl.so閲岄潰鏈?涓嚱鏁幫細
dlopen//鎵撳紑涓涓姩鎬佸簱
dlsym//鍦ㄦ墦寮鐨勫姩鎬佸簱閲屾壘涓涓嚱鏁?br />dlclose//鍏抽棴鍔ㄦ佸簱
dlerror//榪斿洖閿欒
//dldemo.c
#include <dlfcn.h>
main()
{
void *handle = dlopen("./libdemo4.so", RTLD_LAZY);
void (*fun)(int) = dlsym(handle, "diamond");
fun(5);
dlclose(handle);
}
gcc dldemo.c -o main -ldl
ldd main
./main
鎬葷粨錛?br /> 1. 緙栬瘧榪炴帴鍔ㄦ佸簱
2. 浣跨敤鍔ㄦ佸簱
3. 鎬庝箞閰嶇疆璁╃▼搴忚皟鐢ㄥ姩鎬佸簱
4. 鎺屾彙鏌愪簺宸ュ叿鐨勪嬌鐢?nm ldd lddconfig objdump strit(鍘繪帀澶氫綑鐨勪俊鎭?
鍏?宸ュ叿make鐨勪嬌鐢ㄤ笌makefile鑴氭湰
鑳屾櫙錛?br />make緙栬瘧鑴氭湰瑙i噴
緙栬瘧鑴氭湰makefile
make -f 鑴氭湰鏂囦歡 鐩爣
鑴氭湰鏂囦歡錛?br />1. 鏂囨湰鏂囦歡 錛堜緥濡?demo.mk錛?br />2. 鍩烘湰鏋勬垚璇硶
鍩烘湰鍗曚綅鐩爣target
鐩爣鍚嶏細渚濊禆鐩爣
\t鐩爣鎸囦護
\t鐩爣鎸囦護
//demo.mk
demo:iotool.c graphic.c main.c
gcc iotool.c -c
gcc graphic.c -c
gcc iotool.o graphic.o -shared -o libdemo.so
gcc main.c -ldemo -L. -o main
make -f demo.mk demo 浼氱敓浜ain鍙墽琛屾枃浠?img src ="http://m.shnenglu.com/mysileng/aggbug/196708.html" width = "1" height = "1" />
]]> - linux楂樼駭緙栫▼day01 絎旇 (杞?http://m.shnenglu.com/mysileng/archive/2012/12/26/196698.html閼緳閼緳Wed, 26 Dec 2012 11:55:00 GMThttp://m.shnenglu.com/mysileng/archive/2012/12/26/196698.htmlhttp://m.shnenglu.com/mysileng/comments/196698.htmlhttp://m.shnenglu.com/mysileng/archive/2012/12/26/196698.html#Feedback0http://m.shnenglu.com/mysileng/comments/commentRss/196698.htmlhttp://m.shnenglu.com/mysileng/services/trackbacks/196698.html闃呰鍏ㄦ枃

]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲国产精品t66y|
宅男精品视频|
欧美精品国产精品|
久久综合激情|
欧美电影在线观看完整版|
免费在线成人|
亚洲永久免费精品|
欧美日韩亚洲国产一区|
欧美三级第一页|
国产精品免费视频xxxx|
国产精品一区毛片|
精品1区2区3区4区|
亚洲精品久久久久久久久|
一本色道婷婷久久欧美|
亚洲欧美另类国产|
久久婷婷色综合|
亚洲国产欧美日韩|
亚洲一区影音先锋|
久久久精品五月天|
欧美日韩免费看|
国产精品入口福利|
亚洲福利在线看|
亚洲国产精品电影|
欧美午夜免费影院|
国产午夜精品全部视频在线播放
|
欧美黄色aaaa|
一区二区三区四区在线|
久久成人精品视频|
欧美精品在欧美一区二区少妇|
欧美性大战xxxxx久久久|
国产欧美一区二区色老头|
亚洲国产精品悠悠久久琪琪|
亚洲视频欧洲视频|
免费精品视频|
欧美一乱一性一交一视频|
欧美国产丝袜视频|
激情综合五月天|
一本色道久久综合亚洲精品小说|
欧美亚洲一区二区三区|
欧美激情欧美激情在线五月|
亚洲国产你懂的|
欧美一区激情视频在线观看|
欧美精品一区二区三区很污很色的|
国产欧美精品一区aⅴ影院|
日韩西西人体444www|
久久亚洲精品伦理|
午夜精品久久|
国产精品视频免费一区|
亚洲深夜福利|
亚洲精品国产精品国自产观看|
久久久五月天|
国产在线视频欧美一区二区三区|
亚洲午夜女主播在线直播|
亚洲大胆在线|
久久在线观看视频|
伊人精品成人久久综合软件|
欧美一区1区三区3区公司|
亚洲视频国产视频|
夜夜嗨av色一区二区不卡|
亚洲一区二区三区激情|
欧美大片在线观看一区|
亚洲国产精品精华液网站|
久久男人资源视频|
欧美一区亚洲|
国内成+人亚洲|
久久久人成影片一区二区三区
|
欧美日韩亚洲一区二区三区在线观看|
亚洲国产精品激情在线观看|
欧美高清不卡在线|
久久激情视频久久|
在线亚洲欧美|
国产亚洲精品自拍|
老司机精品久久|
免费观看成人网|
久久一区视频|
亚洲国产色一区|
亚洲激情视频|
欧美日韩一区二区三区免费|
亚洲私人影院|
亚洲自拍三区|
亚洲电影网站|
亚洲精品系列|
国产欧美一区二区精品秋霞影院
|
国产精品爽黄69|
卡一卡二国产精品|
欧美精品激情在线观看|
亚洲性视频网站|
欧美一区午夜精品|
亚洲破处大片|
亚洲私人影院在线观看|
韩国三级在线一区|
亚洲国产精品电影|
国产精品一区二区在线观看|
久久资源在线|
欧美视频精品一区|
老司机免费视频一区二区|
欧美精品二区|
久久久久国产精品人|
欧美精品日韩三级|
玖玖玖国产精品|
国产精品美女www爽爽爽|
欧美激情成人在线视频|
国产精品久久久爽爽爽麻豆色哟哟|
久久综合九色九九|
国产精品久久久久国产a级|
另类欧美日韩国产在线|
欧美性理论片在线观看片免费|
久久综合久色欧美综合狠狠|
欧美日韩精品二区第二页|
久久亚洲综合|
国产精品午夜av在线|
欧美激情精品久久久久久黑人|
国产精品一二一区|
亚洲免费观看高清完整版在线观看|
一区在线免费观看|
亚洲欧美日韩综合aⅴ视频|
一区二区免费在线视频|
99riav国产精品|
久久经典综合|
欧美综合激情网|
国产精品盗摄一区二区三区|
亚洲福利在线视频|
一区精品在线|
欧美在线91|
欧美中文字幕精品|
国产精品乱码一区二区三区|
最近中文字幕mv在线一区二区三区四区
|
麻豆成人精品|
国产一区在线看|
亚洲欧美三级伦理|
午夜伦理片一区|
国产精品一二三视频|
亚洲一区二区三区777|
亚洲在线观看免费|
国产精品乱码一区二三区小蝌蚪|
99视频精品免费观看|
在线一区视频|
国产精品福利av|
亚洲尤物影院|
久久频这里精品99香蕉|
国产亚洲一本大道中文在线|
羞羞漫画18久久大片|
久久久国际精品|
伊人久久婷婷|
欧美a级一区|
亚洲精品综合|
亚洲欧美中文另类|
国产日韩精品一区|
欧美在线免费观看|
免费观看国产成人|
99re在线精品|
国产精品乱码久久久久久|
午夜在线精品偷拍|
久久色在线观看|
亚洲国产日韩欧美在线99
|
欧美日本一区二区三区|
亚洲日本欧美日韩高观看|
日韩天堂av|
国产精品久久久亚洲一区|
亚洲欧美日韩视频二区|
久久精品欧洲|
亚洲激情啪啪|
国产精品激情偷乱一区二区∴|
亚洲一区在线播放|
久久夜色精品国产欧美乱|
亚洲国产欧美日韩另类综合|
欧美日韩免费观看一区三区|
性色av一区二区三区|
欧美国产日韩二区|
亚洲欧美一区二区三区极速播放|
国产一区二区三区不卡在线观看|
欧美ed2k|
欧美专区日韩专区|
日韩午夜激情av|
美女精品国产|
欧美一区二区在线播放|
亚洲国产岛国毛片在线|
国产精品成人一区二区艾草|
久久精品最新地址|
亚洲精品乱码久久久久久日本蜜臀|
亚洲欧美日韩天堂|
91久久精品国产91久久|
国产区精品视频|
欧美理论片在线观看|
99视频日韩|
亚洲国内在线|
国产老女人精品毛片久久|
美日韩精品免费观看视频|
亚洲午夜电影网|
91久久国产自产拍夜夜嗨|
久久精品国产91精品亚洲|
一区二区三区久久久|
在线高清一区|
国产亚洲一级高清|
国产精品久久久久影院色老大|
欧美黄色视屏|
欧美成人一区二区三区片免费|
亚洲免费影视第一页|
亚洲美女区一区|
欧美激情在线观看|