青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

旅途

如果想飛得高,就該把地平線忘掉

C語言程序靜態庫和動態庫的創建及其應用

在用c寫程序時,很多時候需要存儲一些簡單的數據,如果為此而用mysql數據庫就有些
大才小用了,可以把這些數據以結構的形寫入文件,然后再需要時讀取文件,取出數據。

如下是定義函數的源文件和頭文件:

源文件struct.c:

#include "struct.h"
//第一個參數是要寫入的文件名,第二個參數是緩沖區,第三個參數是緩沖區大小,
第四個參數是打開文件流的形態,返回TRUE表示寫入成功,返回FALSE表示寫入失敗
int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode){
int ret;
FILE *fileID = NULL;
fileID = fopen(fileName,mode);
if (fileID == NULL){
perror("fopen");
goto writeEnd;
}
rewind(fileID);
ret = fwrite(buffer,bufferLen,1,fileID);
if (ret <= 0){
perror("fwrite");
goto writeEnd;
}
if (fileID != NULL){
fclose(fileID);
fileID = NULL;
}
return TRUE;
writeEnd:
if (fileID != NULL){
fclose(fileID);
fileID = NULL;
}
return FALSE;
}
//第一個參數是要讀取的文件名,第二個參數是緩沖區,第三個參數是緩沖區大小,
第四個參數是打開文件流的形態,返回TRUE表示讀取成功,返回FALSE表示讀取失敗
int readStruct(const char *fileName,char *buffer,int bufferLen,char *mode){
int ret;
FILE *fileID = NULL;
fileID = fopen(fileName,mode);
if (fileID == NULL){
perror("fopen");
goto readEnd;
}
rewind(fileID);
memset(buffer,0,sizeof(buffer));
ret = fread(buffer,bufferLen,1,fileID);
if (ret >= 0){
strcat(buffer,"\0");
}else{
perror("fread") ;
goto readEnd;
}
if (fileID != NULL){
fclose(fileID);
fileID = NULL;
}
return TRUE;
readEnd:
if (fileID != NULL){
fclose(fileID);
fileID = NULL;
}
return FALSE;
}

頭文件struct.h:

#ifndef OWNSTRUCT_H_
#define OWNSTRUCT_H_
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define FALSE 0
#define TRUE 1
//第一個參數是要寫入的文件名,第二個參數是緩沖區,第三個參數是緩沖區大小,
第四個參數是打開文件流的形態,返回TRUE表示寫入成功,返回FALSE表示寫入失敗
int writeStruct(const char *fileName,char *buffer,int bufferLen,char *mode);
//第一個參數是要讀取的文件名,第二個參數是緩沖區,第三個參數是緩沖區大小,
第四個參數是打開文件流的形態,返回TRUE表示讀取成功,返回FALSE表示讀取失敗
int readStruct(const char *fileName,char *buffer,int bufferLen,char *mode);
#endif
為了使用方便,可以把這兩個函數接口定義為動態鏈接庫或靜態鏈接庫。用動態鏈接庫
編譯生成的可執行文件需調用.so文件方可正常運行,靈活但稍顯麻煩;用靜態鏈接庫編
譯生成的可執行文件可直接運行,不用再調用如.so般的依賴庫文件,簡單但不靈活。

靜態鏈接庫:

1、編譯生成目標文件

gcc -c struct.c

2、創建靜態庫

ar cqs libstruct.a struct.o (順序不能亂)

3、鏈接靜態鏈接庫,生成可執行文件

gcc main.c -static -L. -ltest -o main

動態鏈接庫:

1、編譯成動態鏈接庫

gcc struct.c -fPIC -shared -o libstruct.so

2、鏈接動態鏈接庫,生成可執行文件

gcc main.c -L. -lstruct -o main

3、設置庫文件的環境路徑

1)在bashrc或profile文件里用LD_LIBRARY_PATH定義,然后用source加載。

2)把庫路徑添加到ld.so.conf文件中,然后用ldconfig加載。

3)ldconfig /home/user/lib,僅能暫時性使用,若下次ldconfig時此目錄下的動態鏈
接庫就不能被共享了。

gcc一些參數解析

-shared:指定生成動態鏈接庫。

-static:指定生成靜態鏈接庫。

-fPIC:表示編譯為位置獨立的代碼,用于編譯共享庫。目標文件需要創建成位置無關
碼,概念上就是在可執行程序裝載它們的時候,它們可以放在可執行程序的內存里的任
何地方。

-L.:表示要連接的庫在當前目錄中。

-l:指定鏈接時需要的動態庫。編譯器查找動態連接庫時有隱含的命名規則,即在給出
的名字前面加上lib,后面加上.so來確定庫的名稱。

-Wall:生成所有警告信息。

-ggdb:此選項將盡可能的生成gdb的可以使用的調試信息。

-g:編譯器在編譯的時候產生調試信息。

-c:只激活預處理、編譯和匯編,也就是把程序做成目標文件(.o文件)。

-Wl,options:把參數(options)傳遞給鏈接器ld。如果options中間有逗號,就將
options分成多個選項,然后傳遞給鏈接程序。

posted on 2007-09-29 02:14 旅途 閱讀(787) 評論(0)  編輯 收藏 引用 所屬分類: Linux開發

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美91| 免费短视频成人日韩| 久久综合图片| 老色鬼久久亚洲一区二区| 久久久亚洲人| 欧美1区2区视频| 欧美精品一区二区三区久久久竹菊 | 久久这里有精品视频| 久色成人在线| 欧美日韩免费高清一区色橹橹| 欧美日韩三区四区| 国产精品天天看| 一区二区三区亚洲| av成人激情| 久久久国产一区二区| 亚洲国产成人高清精品| 日韩午夜免费视频| 久久久久久欧美| 国产精品成人一区二区艾草| 1024成人网色www| 亚洲欧美日韩成人| 亚洲国产高清高潮精品美女| 亚洲在线视频一区| 欧美a级一区| 国产在线精品二区| 亚洲午夜激情网页| 亚洲福利av| 久久久精品日韩欧美| 国产精品一区亚洲| 亚洲最新中文字幕| 欧美成人精品三级在线观看| 亚洲欧美国产精品桃花| 欧美日本亚洲| 亚洲国产欧洲综合997久久| 久久激情五月激情| 亚洲欧美成人一区二区三区| 欧美日韩一本到| 亚洲精品在线一区二区| 免费成人高清在线视频| 性久久久久久久久久久久| 国产精品成人播放| 正在播放日韩| 亚洲黄一区二区| 美女久久一区| 亚洲国产欧美精品| 欧美sm重口味系列视频在线观看| 亚洲欧美日韩区| 欧美午夜视频在线观看| 一区二区高清视频在线观看| 亚洲国产日韩欧美在线99 | 欧美午夜精品伦理| 亚洲毛片在线免费观看| 欧美不卡一卡二卡免费版| 久久久久久网| 在线成人www免费观看视频| 久久久久久久久久久一区| 午夜精品久久久久久久99水蜜桃 | 亚洲欧洲在线免费| 免费在线成人av| 久久久久欧美精品| 亚洲国产色一区| 欧美电影在线观看完整版| 久久男人资源视频| 在线欧美小视频| 欧美成年人网站| 欧美国产一区二区三区激情无套| 亚洲久久成人| 在线亚洲免费| 国产精品视屏| 久久精品国产亚洲aⅴ| 欧美一站二站| 亚洲大片在线| 亚洲日本理论电影| 国产精品久在线观看| 久久精品国产99国产精品澳门 | 亚洲乱码国产乱码精品精| 欧美日韩亚洲视频| 午夜精品久久久久久久男人的天堂 | 欧美日韩在线视频观看| 亚洲一区精品在线| 午夜视频一区二区| 一区精品在线播放| 亚洲巨乳在线| 国产一级精品aaaaa看| 欧美刺激性大交免费视频 | 亚洲成人在线网| 99热免费精品在线观看| 国产一区二区三区在线观看精品 | 男女激情视频一区| 欧美美女视频| 久久久www成人免费无遮挡大片 | 国产综合视频| 亚洲高清视频在线观看| 欧美日韩中文字幕在线| 久久综合伊人77777蜜臀| 欧美久久99| 久久在线视频| 国产精品国产三级国产专播精品人| 久久人人97超碰国产公开结果| 欧美插天视频在线播放| 欧美一区二区在线看| 欧美极品一区| 欧美jizzhd精品欧美巨大免费| 国产精品热久久久久夜色精品三区| 在线观看视频一区二区| 夜夜嗨av一区二区三区| 亚洲高清视频一区二区| 亚洲欧美视频一区二区三区| 亚洲精品一区二区三区蜜桃久| 午夜免费在线观看精品视频| 在线亚洲欧美专区二区| 蜜桃伊人久久| 久久综合伊人77777蜜臀| 国产欧美精品日韩精品| 99热免费精品在线观看| 99人久久精品视频最新地址| 久久久久久网址| 浪潮色综合久久天堂| 国产区亚洲区欧美区| 亚洲一区二区三区三| 一区二区三区视频在线观看| 免费成人在线观看视频| 欧美电影免费观看| 一区二区三区在线视频免费观看 | 欧美激情精品久久久久| 蜜臀久久99精品久久久久久9 | 欧美一区国产在线| 欧美三级视频在线播放| 亚洲欧洲日韩综合二区| 亚洲精品一区二区三区四区高清 | 久久久久国产精品厨房| 久久精品日韩欧美| 国产日韩欧美a| 亚洲综合999| 欧美一区二区三区在线看| 国产精品久久一区主播| 午夜电影亚洲| 另类尿喷潮videofree| 红杏aⅴ成人免费视频| 久久午夜视频| 亚洲国产美女久久久久| 亚洲精选91| 欧美午夜大胆人体| 亚洲在线中文字幕| 久久一二三四| 亚洲欧洲日韩女同| 国产精品国产三级国产专播精品人 | 欧美精品日日鲁夜夜添| 亚洲人成网站色ww在线| 中文欧美字幕免费| 国产日韩亚洲欧美| 久久野战av| 亚洲精品免费在线观看| 亚洲欧洲99久久| 黄色精品网站| 欧美激情综合在线| 午夜精品久久久久久久久久久久| 国产专区欧美专区| 狂野欧美激情性xxxx| 亚洲片国产一区一级在线观看| 日韩午夜电影在线观看| 国产精品稀缺呦系列在线| 久久国产精品色婷婷| 亚洲国产高潮在线观看| 亚洲在线国产日韩欧美| 国产日韩精品一区二区三区在线 | 国产在线观看一区| 欧美精品久久久久久久免费观看| 日韩午夜高潮| 美日韩精品视频| 亚洲视频狠狠| 激情综合久久| 国产精品白丝jk黑袜喷水| 久久成人18免费观看| 9人人澡人人爽人人精品| 久久在线视频在线| 欧美亚洲视频在线观看| 亚洲精品一区二区三区四区高清 | 久久视频免费观看| 99re亚洲国产精品| 精品不卡一区二区三区| 欧美日韩在线直播| 免费在线观看成人av| 亚洲欧洲99久久| 一本大道久久精品懂色aⅴ| 美女网站在线免费欧美精品| 香蕉久久一区二区不卡无毒影院 | 亚洲精选久久| 尹人成人综合网| 国产精品视频成人| 欧美激情精品久久久久久| 欧美一级淫片aaaaaaa视频| 99精品视频免费在线观看| 亚洲成色777777女色窝| 久久精品一区蜜桃臀影院| 亚洲欧美第一页| 亚洲一区二区三| 一二三区精品| 夜夜嗨av一区二区三区免费区 | 久热精品在线视频|