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

旅途

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

C語言程序靜態(tài)庫和動態(tài)庫的創(chuàng)建及其應用

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

如下是定義函數(shù)的源文件和頭文件:

源文件struct.c:

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

靜態(tài)鏈接庫:

1、編譯生成目標文件

gcc -c struct.c

2、創(chuàng)建靜態(tài)庫

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

3、鏈接靜態(tài)鏈接庫,生成可執(zhí)行文件

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

動態(tài)鏈接庫:

1、編譯成動態(tài)鏈接庫

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

2、鏈接動態(tài)鏈接庫,生成可執(zhí)行文件

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

3、設置庫文件的環(huán)境路徑

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

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

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

gcc一些參數(shù)解析

-shared:指定生成動態(tài)鏈接庫。

-static:指定生成靜態(tài)鏈接庫。

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

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

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

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

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

-g:編譯器在編譯的時候產(chǎn)生調試信息。

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

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

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

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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久久综合| 久久综合九九| 在线精品视频免费观看 | 亚洲高清免费视频| 亚洲色图综合久久| 亚洲久久成人| 麻豆精品网站| 久久激情中文| 国产精品私人影院| 亚洲乱亚洲高清| 91久久久一线二线三线品牌| 欧美一区中文字幕| 午夜久久福利| 欧美三级特黄| 亚洲理伦电影| 99在线热播精品免费99热| 狂野欧美激情性xxxx| 久久一区免费| 国模私拍视频一区| 在线一区二区三区四区| 久久亚洲春色中文字幕| 久久综合久久综合久久综合| 国产欧美亚洲精品| 亚洲一区999| 亚洲欧美一区二区在线观看| 欧美无乱码久久久免费午夜一区| 亚洲国产专区校园欧美| 亚洲日本理论电影| 欧美成人精品1314www| 欧美电影在线观看完整版| 亚洲国产精品久久久久婷婷884| 久久人91精品久久久久久不卡| 久久久一区二区| 国内精品一区二区三区| 久久精品国产91精品亚洲| 久久男人资源视频| 亚洲成人在线网| 欧美1级日本1级| 亚洲激情六月丁香| 一区二区免费在线视频| 欧美性一二三区| 亚洲一区国产| 久久久久久夜| 亚洲国内欧美| 欧美日韩不卡在线| 一区二区欧美日韩| 欧美在线视频不卡| 国内一区二区三区在线视频| 久久久久久亚洲精品中文字幕 | 亚洲国产经典视频| 99热这里只有成人精品国产| 欧美视频网站| 久久xxxx精品视频| 亚洲国产精品成人久久综合一区| 夜夜嗨av一区二区三区网页 | 国产精品久久网| 亚洲在线黄色| 免费观看久久久4p| 一本色道久久综合亚洲二区三区 | 亚洲女同同性videoxma| 国产伦精品一区二区三区高清版 | 久久精品女人的天堂av| 亚洲国产天堂久久综合网| 欧美久久在线| 小黄鸭精品密入口导航| 最新成人av网站| 欧美一区二区在线免费观看| 一区在线播放视频| 欧美午夜激情小视频| 久久久噜噜噜久久人人看| 亚洲日本欧美天堂| 久久久999精品| 夜夜精品视频一区二区| 国内视频精品| 91久久精品日日躁夜夜躁国产| 亚洲无亚洲人成网站77777| 国语自产精品视频在线看8查询8| 欧美久久电影| 欧美自拍偷拍| 正在播放亚洲一区| 亚洲福利视频专区| 久久se精品一区二区| 一本色道久久99精品综合| 激情五月婷婷综合| 国产精品青草久久| 欧美日韩免费一区二区三区| 久久综合色婷婷| 欧美一区二区三区四区在线观看地址 | 亚洲精品欧洲精品| 国产精品免费小视频| 欧美韩日亚洲| 麻豆成人在线播放| 欧美中文字幕久久| 亚洲综合国产精品| 一区二区三区毛片| 亚洲精品久久久久久下一站| 欧美高清不卡在线| 久久综合九色九九| 久久精品成人一区二区三区蜜臀| 一区二区三区精品久久久| 亚洲国产女人aaa毛片在线| 国产在线拍偷自揄拍精品| 国产精品igao视频网网址不卡日韩| 男女激情视频一区| 久久免费高清| 久久综合久久久| 久久久亚洲综合| 久久久久国产精品一区| 久久精品99| 久久精品国产99| 久久精品免视看| 久久久综合香蕉尹人综合网| 欧美中文在线字幕| 久久久人成影片一区二区三区| 欧美一区二区三区成人| 欧美一区91| 久久国产精品亚洲77777| 欧美在线亚洲| 久久―日本道色综合久久| 久久婷婷国产综合精品青草 | 欧美日韩国产精品一卡| 欧美精品一卡二卡| 欧美午夜不卡在线观看免费| 欧美色图麻豆| 国产精品专区h在线观看| 国产视频欧美视频| 伊伊综合在线| 亚洲欧洲日韩女同| 99亚洲一区二区| 亚洲欧美bt| 久久久一区二区三区| 欧美国产第二页| 亚洲精品永久免费| 亚洲一区精品电影| 久久久久久久97| 欧美国产视频日韩| 国产精品视频精品视频| 黄色日韩精品| 亚洲靠逼com| 欧美亚洲一区二区三区| 免费亚洲网站| av成人手机在线| 欧美亚洲免费在线| 欧美国产精品va在线观看| 欧美r片在线| 中文精品99久久国产香蕉| 欧美在线|欧美| 欧美日本在线| 国内精品久久久久久久97牛牛| 日韩视频永久免费观看| 欧美在线播放高清精品| 亚洲电影在线观看| 亚洲一区免费视频| 欧美aⅴ99久久黑人专区| 国产精品卡一卡二| 亚洲电影免费观看高清完整版| 亚洲一区二区三区在线播放| 美女主播一区| 一区二区三区视频在线| 久久久久久久999精品视频| 国产精品va| 亚洲欧洲日本一区二区三区| 久久成年人视频| 亚洲精品视频在线观看免费| 久久国内精品视频| 国产精品二区在线| 亚洲日本成人| 卡一卡二国产精品| 亚洲午夜av在线| 欧美精品在线视频观看| 136国产福利精品导航| 欧美主播一区二区三区美女 久久精品人| 亚洲成色www8888| 欧美一区二区三区啪啪| 国产精品久久久久久亚洲调教| 亚洲精品乱码久久久久久蜜桃91| 久久久999精品| 亚洲午夜精品久久久久久app| 欧美不卡高清| 伊人蜜桃色噜噜激情综合| 久久精品色图| 午夜精品99久久免费| 欧美性色视频在线| 在线视频欧美精品| 亚洲欧洲日产国产网站| 欧美成人福利视频| 亚洲欧洲久久| 亚洲国产成人精品视频| 美女日韩在线中文字幕| 亚洲承认在线| 久久综合色播五月| 久久精品99国产精品| 激情综合色综合久久| 久久婷婷久久| 久久福利视频导航| 国内自拍一区| 猫咪成人在线观看| 鲁鲁狠狠狠7777一区二区| 亚洲风情亚aⅴ在线发布| 欧美高清在线视频观看不卡|