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

旅途

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

用gcc編譯生成動(dòng)態(tài)鏈接庫*.so文件的方法。

動(dòng)態(tài)庫*.so在linux下用c和c++編程時(shí)經(jīng)常會(huì)碰到,最近在網(wǎng)站找了幾篇文章介紹動(dòng)態(tài)庫的編譯和鏈接,總算搞懂了這個(gè)之前一直不太了解得東東,這里做個(gè)筆記,也為其它正為動(dòng)態(tài)庫鏈接庫而苦惱的兄弟們提供一點(diǎn)幫助。
1、動(dòng)態(tài)庫的編譯

下面通過一個(gè)例子來介紹如何生成一個(gè)動(dòng)態(tài)庫。這里有一個(gè)頭文件:so_test.h,三個(gè).c文件:test_a.c、test_b.c、test_c.c,我們將這幾個(gè)文件編譯成一個(gè)動(dòng)態(tài)庫:libtest.so。

so_test.h:



#include

#include



void test_a();

void test_b();

void test_c();



test_a.c:



#include "so_test.h"



void test_a()

{

printf("this is in test_a...\n");

}



test_b.c:



#include "so_test.h"



void test_b()

{

printf("this is in test_b...\n");

}



test_a.c:



#include "so_test.h"



void test_c()

{

printf("this is in test_c...\n");

}



將這幾個(gè)文件編譯成一個(gè)動(dòng)態(tài)庫:libtest.so



$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so


2、動(dòng)態(tài)庫的鏈接

在1、中,我們已經(jīng)成功生成了一個(gè)自己的動(dòng)態(tài)鏈接庫libtest.so,下面我們通過一個(gè)程序來調(diào)用這個(gè)庫里的函數(shù)。程序的源文件為:test.c。

test.c:



#include "so_test.h"



int main()

{

test_a();

test_b();

test_c();



return 0;

}



l 將test.c與動(dòng)態(tài)庫libtest.so鏈接生成執(zhí)行文件test:



$ gcc test.c -L. -ltest -o test



l 測(cè)試是否動(dòng)態(tài)連接,如果列出libtest.so,那么應(yīng)該是連接正常了



$ ldd test



l 執(zhí)行test,可以看到它是如何調(diào)用動(dòng)態(tài)庫中的函數(shù)的。
3、編譯參數(shù)解析
最主要的是GCC命令行的一個(gè)選項(xiàng):
-shared 該選項(xiàng)指定生成動(dòng)態(tài)連接庫(讓連接器生成T類型的導(dǎo)出符號(hào)表,有時(shí)候也生成弱連接W類型的導(dǎo)出符號(hào)),不用該標(biāo)志外部程序無法連接。相當(dāng)于一個(gè)可執(zhí)行文件

l -fPIC:表示編譯為位置獨(dú)立的代碼,不用此選項(xiàng)的話編譯后的代碼是位置相關(guān)的所以動(dòng)態(tài)載入時(shí)是通過代碼拷貝的方式來滿足不同進(jìn)程的需要,而不能達(dá)到真正代碼段共享的目的。

l -L.:表示要連接的庫在當(dāng)前目錄中

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

l LD_LIBRARY_PATH:這個(gè)環(huán)境變量指示動(dòng)態(tài)連接器可以裝載動(dòng)態(tài)庫的路徑。

l 當(dāng)然如果有root權(quán)限的話,可以修改/etc/ld.so.conf文件,然后調(diào)用 /sbin/ldconfig來達(dá)到同樣的目的,不過如果沒有root權(quán)限,那么只能采用輸出LD_LIBRARY_PATH的方法了。
4、注意

調(diào)用動(dòng)態(tài)庫的時(shí)候有幾個(gè)問題會(huì)經(jīng)常碰到,有時(shí),明明已經(jīng)將庫的頭文件所在目錄 通過 “-I” include進(jìn)來了,庫所在文件通過 “-L”參數(shù)引導(dǎo),并指定了“-l”的庫名,但通過ldd命令察看時(shí),就是死活找不到你指定鏈接的so文件,這時(shí)你要作的就是通過修改 LD_LIBRARY_PATH或者/etc/ld.so.conf文件來指定動(dòng)態(tài)庫的目錄。通常這樣做就可以解決庫無法鏈接的問題了。

- 作者: 像風(fēng)一樣流浪 訪問統(tǒng)計(jì):31 2005年10月11日, 星期二 17:08 加入博采

posted on 2007-09-29 01:31 旅途 閱讀(9456) 評(píng)論(3)  編輯 收藏 引用 所屬分類: Linux開發(fā)

Feedback

# re: 用gcc編譯生成動(dòng)態(tài)鏈接庫*.so文件的方法。 2010-01-27 14:04 勞工

不錯(cuò),謝謝  回復(fù)  更多評(píng)論   

# re: 用gcc編譯生成動(dòng)態(tài)鏈接庫*.so文件的方法。 2010-01-27 14:05 ali

<script>alert(8);</script>  回復(fù)  更多評(píng)論   

# re: 用gcc編譯生成動(dòng)態(tài)鏈接庫*.so文件的方法。 2012-06-16 08:59 喬方杰

寫的很好啊  回復(fù)  更多評(píng)論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线免费观看一区二区三区| 夜夜精品视频一区二区| 欧美激情a∨在线视频播放| 久久久久一区二区三区四区| 久久久伊人欧美| 欧美国产日产韩国视频| 国产亚洲精品综合一区91| 亚洲一区二区三区高清不卡| 亚洲尤物在线视频观看| 欧美日韩免费在线| 亚洲少妇自拍| 久久久之久亚州精品露出| 久久国产乱子精品免费女 | 亚洲精品1区2区| 狠狠色丁香婷婷综合| 久久精品动漫| 免费亚洲一区二区| 亚洲三级电影在线观看| 欧美成人国产va精品日本一级| 欧美国产成人在线| 99精品免费网| 国产精品剧情在线亚洲| 欧美亚洲综合在线| 免费成人激情视频| 日韩视频―中文字幕| 欧美日韩a区| 亚洲专区一区| 你懂的国产精品| 一区二区三区福利| 国产精品自拍视频| 久久久久久有精品国产| 亚洲激情不卡| 欧美一区二区国产| 亚洲大片免费看| 欧美日韩一级片在线观看| 亚洲在线观看| 欧美黄色一区| 午夜久久99| 尤物精品在线| 欧美日韩一区二区欧美激情| 新片速递亚洲合集欧美合集| 欧美国产日韩一区二区| 亚洲国产成人不卡| 激情成人综合| 欧美精品在线观看一区二区| 亚洲视频一二三| 蜜臀久久99精品久久久久久9 | 午夜精品久久久久久久蜜桃app| 国产人久久人人人人爽| 欧美xx69| 亚洲一区二区在线观看视频| 免费观看在线综合色| 一区二区三区视频在线看| 国产精品豆花视频| 欧美大胆a视频| 国产精品久久久久久久久久ktv| 午夜欧美精品| 性久久久久久| 亚洲毛片视频| 国产亚洲女人久久久久毛片| 欧美国内亚洲| 欧美在线免费观看| 99视频精品| 欧美大秀在线观看| 久久国产88| 亚洲一区二区三区高清| 亚洲高清视频中文字幕| 国产精品网站在线观看| 欧美精品一区在线发布| 久久久九九九九| 亚洲男人第一av网站| 亚洲精选国产| 欧美激情欧美激情在线五月| 久久精品亚洲一区| 亚洲伊人观看| 日韩午夜剧场| 国产精品99久久久久久久女警 | 亚洲黄色高清| 国产精品普通话对白| 欧美国产日韩精品| 久久婷婷麻豆| 欧美在线观看天堂一区二区三区| 99精品久久久| 亚洲精品久久久久久下一站| 老牛国产精品一区的观看方式| 欧美一区二区国产| 亚洲欧美影音先锋| 亚洲欧美www| 亚洲综合欧美| 亚洲综合色丁香婷婷六月图片| 91久久国产综合久久蜜月精品 | 欧美伦理91| 欧美va天堂va视频va在线| 久久久噜噜噜久久久| 欧美一区国产二区| 欧美一区1区三区3区公司| 亚洲午夜激情| 一片黄亚洲嫩模| 亚洲视频欧美视频| 中文高清一区| 先锋影音网一区二区| 午夜视频一区| 久久久91精品国产一区二区三区| 欧美在线视频一区二区| 久久精品国产亚洲一区二区| 久久精品亚洲一区二区三区浴池| 久久成人一区二区| 久久午夜影视| 欧美**人妖| 欧美成人免费在线观看| 久久资源在线| 欧美精品国产| 欧美久久99| 欧美亚韩一区| 国产欧美一区二区三区久久| 激情欧美丁香| 亚洲精品日韩在线观看| 日韩一级黄色片| 一区二区日韩伦理片| 欧美国产一区二区在线观看| 亚洲高清在线精品| av成人激情| 午夜欧美不卡精品aaaaa| 久久精品最新地址| 欧美成人精品一区二区| 欧美午夜不卡视频| 国产精品综合av一区二区国产馆| 韩国免费一区| 99re视频这里只有精品| 亚洲伊人一本大道中文字幕| 久久久亚洲一区| 亚洲国产精品999| 亚洲九九精品| 久久不射中文字幕| 欧美全黄视频| 国产日韩一区二区三区| 亚洲国产精品成人综合| 亚洲午夜91| 欧美一区二区国产| 亚洲第一主播视频| 亚洲天堂av电影| 久久综合久久久久88| 国产精品国产精品国产专区不蜜| 国产一区视频在线观看免费| 99xxxx成人网| 久久精品一区二区三区不卡| 亚洲国产专区| 久久gogo国模啪啪人体图| 欧美精品xxxxbbbb| 国产亚洲a∨片在线观看| 亚洲毛片一区二区| 亚洲香蕉网站| 亚洲免费久久| 久久精品天堂| 亚洲乱码一区二区| 久久精品欧美| 欧美视频1区| 亚洲国产第一页| 欧美一进一出视频| 亚洲电影免费| 亚洲欧美国产另类| 欧美黄污视频| 国产日韩欧美不卡在线| 99ri日韩精品视频| 久久午夜影视| 亚洲精品资源| 美女在线一区二区| 国产一区二区精品丝袜| 亚洲一区免费观看| 国产麻豆成人精品| 国产婷婷色一区二区三区四区| 亚洲精品资源| 麻豆国产精品777777在线 | 久久免费午夜影院| 一区二区三区欧美在线观看| 亚洲精品一区久久久久久| 久久久久久久91| 国产欧美在线播放| 午夜宅男久久久| 99精品视频网| 久久福利一区| 日韩亚洲欧美一区| 欧美~级网站不卡| 国产精品视频xxxx| 亚洲国产精品久久| 亚洲在线免费观看| 欧美日韩在线观看一区二区| 亚洲黄网站黄| 欧美电影在线观看| 久久久久久网址| 国内精品久久久久久| 久久精品视频播放| 久久国产加勒比精品无码| 国产色产综合色产在线视频| 羞羞漫画18久久大片| 亚洲伊人网站| 国产精品美女久久久久av超清 | 欧美激情综合色| 日韩一区二区电影网| 亚洲大胆视频|