亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Linux下動態庫的創建與鏈接

2019-11-10 18:21:06
字體:
來源:轉載
供稿:網友
連接和運行時庫文件搜索路徑到設置 庫文件在連接(靜態庫和共享 庫)和運行(僅限于使用共享庫的程序)時被使用,其搜索路徑是在系統中進行設置的。一般linux 系統把 /lib 和 /usr/lib 兩個目錄作為默認的庫搜索路徑,所以使用這兩個目錄中的庫時不需要進行設置搜索路徑即可直接使用。對于處于默認庫搜索路徑之外的庫,需要將庫的位置添加到 庫的搜索路徑之中。設置庫文件的搜索路徑有下列兩種方式,可任選其一使用: (1). 在 /etc/ld.so.conf 文件中添加庫的搜索路徑。(或者在/etc/ld.so.conf.d 下新建一個.conf文件,將搜索路徑一行一個加入-junziyang) 將自己可能存放庫文件的路徑都加入到/etc /ld.so.conf中是明智的選擇添加方法也極其簡單,將庫文件的絕對路徑直接寫進去就OK了,一行一個。例如: /usr/X11R6/lib /usr/local/lib /opt/lib 需要注意的是:這種搜索路徑的設置方式對于程序連接時的庫(包括共享庫和靜態庫)的定位已經足夠了,但是對于使用了共享庫的程序的執行還是不夠的。這是 因為為了加快程序執行時對共享庫的定位速度,避免使用搜索路徑查找共享庫的低效率,所以是直接讀取庫列表文件 /etc/ld.so.cache 從中進行搜索的。/etc/ld.so.cache 是一個非文本的數據文件,不能直接編輯,它是根據 /etc/ld.so.conf 中設置的搜索路徑由 /sbin/ldconfig 命令將這些搜索路徑下的共享庫文件集中在一起而生成的(ldconfig 命令要以 root 權限執行)。 因此,為了保證程序執行時對庫的定位, 在 /etc/ld.so.conf 中進行了庫搜索路徑的設置之后,還必須要運行 /sbin/ldconfig 命令更新 /etc/ld.so.cache 文件之后才可以。ldconfig ,簡單的說,它的作用就是將/etc/ld.so.conf列出的路徑下的庫文件緩存到/etc/ld.so.cache 以供使用。因此當安裝完一些庫文件,(例如剛安裝好glib),或者修改ld.so.conf增加新的庫路徑后,需要運行一下 /sbin/ldconfig使所有的庫文件都被緩存到ld.so.cache中,如果沒做,即使庫文件明明就在/usr/lib下的,也是不會被使用 的,結果編譯過程中抱錯,缺少xxx庫,去查看發現明明就在那放著,搞的想大罵computer蠢豬一個。 在程序連接時,對于庫文件(靜態庫和共享庫)的搜索路徑,除了上面的設置方式之外,還可以通過 -L 參數顯式指定。因為用 -L 設置的路徑將被優先搜索,所以在連接的時候通常都會以這種方式直接指定要連接的庫的路徑。 這種設置方式需要 root 權限,以改變 /etc/ld.so.conf 文件并執行 /sbin/ldconfig 命令。而且,當系統重新啟動后,所有的基于 GTK2 的程序在運行時都將使用新安裝的 GTK+ 庫。不幸的是,由于 GTK+ 版本的改變,這有時會給應用程序帶來兼容性的問題,造成某些程序運行不正常。為了避免出現上面的這些情況,在 GTK+ 及其依賴庫的安裝過程中對于庫的搜索路徑的設置將采用另一種方式進行。這種設置方式不 需要 root 權限,設置也簡單。 (2). 在環境變量 LD_LIBRARY_PATH 中指明庫的搜索路徑。 設置方式: export LD_LIBRARY_PATH=/opt/gtk/lib:LDLIBRARYPATH可以用下面的命令查看LDLIBRAYPATH的設置內容:echoLD_LIBRARY_PATH 至此,庫的兩種設置就完成了。

2.交叉編譯時候如何配置連接庫的搜索路 徑

交叉編譯的時候不能使用本地(i686機器,即PC機器,研發機器)機器上的庫,但是在做編譯鏈接的時候默認的是使用本地庫,即/usr/lib, /lib兩個目錄。因此,在交叉編譯的時候,要采取一些方法使得在編譯鏈接的時候找到需要的庫。首先,要知道:編譯的時候只需要頭文檔,真正實際的庫文檔在鏈接的 時候用到。 (這是我的理解,假如有不對的地方,敬請網上各位大俠指教) 然后,講講如何在交叉編譯鏈接的時候找到需要的庫。

(1)交叉編譯時候直接使用-L和-I參數指定搜索非標準的庫文檔和頭文檔的路徑。例如: arm-linux-gcc test.c -L/usr/local/arm/2.95.3/arm-linux/lib -I/usr/local/arm/2.95.3/arm-linux/include (2)使用ld.so.conf文檔,將用到的庫所在文檔目錄添加到此文檔中,然后使用ldconfig命令刷新緩存。 (3)使用如下命令: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/2.95.3/arm-linux-lib 參見《ld.so.conf 文檔和PKG_CONFIG_PATH變量》這篇文章。 通過環境變量LD_LIBRARY_PATH指定動態庫搜索路徑(?。?通過設定環境變量LD_LIBRARY_PATH也可以指定動態庫搜索路徑。當通過該環境變量指定多個動態庫搜索路徑時,路徑之間用冒號”:”分隔。 不過LD_LIBRARY_PATH的設定作用是全局的, 過多的使用可能會影響到其他應用程序的運行,所以多用在調試。(LD_LIBRARY_PATH 的缺陷和使用準則,可以參考《Why LD_LIBRARY_PATH is bad》 )。通常情況下推薦還是使用gcc的-R或-rpath選項來在編譯時就指定庫的查找路徑,并且該庫的路徑信息保存在可執行文件中,運行時它會直接到該路 徑查找庫,避免了使用LD_LIBRARY_PATH環境變量查找。 (4)交叉編譯時使用軟件的configure參數。例如我編譯minigui-1.3.3,使用如下配置:

!/bin/bash

rm -f config.cache config.status ./configure –build=i686-linux –host=arm-linux –target=arm-linux / CFLAGS=-I/usr/local/arm/2.95.3/arm-linux/include / LDFLAGS=-L/usr/local/arm/2.95.3/arm-linux/lib / –PRefix=/usr/local/arm/2.95.3/arm-linux / –enable-lite / –disable-galqvfb / –disable-qvfbial / –disable-vbfsupport / –disable-ttfsupport / –disable-type1support / –disable-imegb2312py / –enable-extfullgif / –enable-extskin / –disable-videoqvfb / –disable-videoecoslcd 這里我配置了CFLAGS和LDFLAGS參數,這樣一來,我就不用去修改每個Makefile里-L和-I參數了,也不用再去配置 LD_LIBRARY_PATH或改寫ld.so.conf文檔了。

Linux下動態庫使用小結

靜態庫和動態庫的基本概念 靜態庫,是在可執行程序連接時就已經加入到執行碼中,在物理上成為執行程序的一部分;使用靜態庫編譯的程序運行時無需該庫文件支持,哪里都可以用,但是生 成的可執行文件較大。動態庫,是在可執行程序啟動時加載到執行程序中,可以被多個可執行程序共享使用。使用動態庫編譯生成的程序相對較小,但運行時需要庫 文件支持,如果機器里沒有這些庫文件就不能運行。 2. 如何使用動態庫 如何程序在連接時使用了共享庫,就必須在運行的時候能夠找到共享庫的位置。linux的可執行程序在執行的時候默認是先搜索/lib和/usr/lib這兩個目錄,然后按照/etc/ld.so.conf里面的配置搜索絕對路徑。同時,Linux也提供了環境變量LD_LIBRARY_PATH供用戶選擇使用,用戶可以通過設定它來查找除默認路徑之外的 其他路徑,如查找/work/lib路徑,你可以在/etc/rc.d/rc.local或其他系統啟動后即可執行到的腳本添加如 下語句:LD_LIBRARY_PATH =/work/lib:(LD_LIBRARY_PATH)。并且LD_LIBRARY_PATH路徑優先于系統默認路徑之前查找(詳細參考《使 用 LD_LIBRARY_PATH》)。  不過LD_LIBRARY_PATH的設定作用是全局的,過多的使用可能會影響到其他應用程序的運行,所以多用在調試。(LD_LIBRARY_PATH 的缺陷和使用準則,可以參考《Why LD_LIBRARY_PATH is bad》 )。通常情況下推薦還是使用gcc的-R或-rpath選項來在編譯時就指定庫的查找路徑,并且該庫的路徑信息保存在可執行文件中,運行時它會直接到該路 徑查找庫,避免了使用LD_LIBRARY_PATH環境變量查找。  3.庫的鏈接時路徑和運行時路徑  現代連接器在處理動態庫時將鏈接時路徑(Link-time path)和運行時路徑(Run-time path)分開,用戶可以通過-L指定連接時庫的路徑,通過-R(或-rpath)指定程序運行時庫的路徑,大大提高了庫應用的靈活性。比如我們做嵌入式 移植時#arm-linux-gcc(CFLAGS) –o target –L/work/lib/zlib/ -llibz-1.2.3 (work/lib/zlib下是交叉編譯好的zlib庫),將target編譯好后我們只要把zlib庫拷貝到開發板的系統默認路徑下即可?;蛘咄ㄟ^- rpath(或-R )、LD_LIBRARY_PATH指定查找路徑。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品va在线看黑人| 亚洲成人网在线观看| 狠狠躁夜夜躁人人爽天天天天97| 亚洲91精品在线观看| 人人做人人澡人人爽欧美| 亚洲伊人一本大道中文字幕| 日韩在线小视频| 国产玖玖精品视频| 在线观看视频亚洲| 在线日韩欧美视频| 国产日韩中文在线| 国产综合在线视频| 18性欧美xxxⅹ性满足| 亚洲伊人一本大道中文字幕| 亚洲影视中文字幕| 久久综合久久美利坚合众国| 色偷偷av亚洲男人的天堂| 亚洲福利在线视频| 国产精品久久91| 国产啪精品视频| 精品女同一区二区三区在线播放| 91国产一区在线| 中文字幕久久亚洲| 91午夜在线播放| 米奇精品一区二区三区在线观看| 亚洲欧美精品中文字幕在线| 国产日韩欧美影视| 欧美麻豆久久久久久中文| 亚洲午夜精品久久久久久久久久久久| 久久91亚洲人成电影网站| 国色天香2019中文字幕在线观看| 国产精品久久久久久亚洲调教| 欧美人在线观看| 日韩性xxxx爱| 这里只有精品久久| 国产视频在线一区二区| 一区二区三区美女xx视频| 日韩欧美在线视频日韩欧美在线视频| 欧美三级免费观看| 欧美日韩免费观看中文| 国产精品永久免费观看| 久久久久久久亚洲精品| 久久久国产一区| 久久韩国免费视频| 国产日韩欧美视频在线| 亚洲激情在线观看视频免费| 亚洲国产精品成人av| 上原亚衣av一区二区三区| 国产欧美一区二区三区四区| 久久国产精品久久久久久| 国自产精品手机在线观看视频| 欧美激情在线观看| 国产精品日韩久久久久| 亚洲曰本av电影| 亚洲国产另类久久精品| 亲子乱一区二区三区电影| 国产最新精品视频| 在线观看日韩www视频免费| 一区二区三区视频免费| 国产精品久久久久久久av大片| 久久久久久高潮国产精品视| 成人精品福利视频| 欧美香蕉大胸在线视频观看| 欧美激情xxxxx| 日韩av大片在线| 日韩av在线免费播放| 精品偷拍一区二区三区在线看| 国产精品高潮呻吟久久av黑人| 国产主播欧美精品| 97人洗澡人人免费公开视频碰碰碰| 日韩一中文字幕| 91国自产精品中文字幕亚洲| 欧美中文字幕在线视频| 欧美性色视频在线| 久久91超碰青草是什么| 亚洲国产精品久久精品怡红院| 欧美激情视频一区二区三区不卡| 91豆花精品一区| 欧美激情综合亚洲一二区| 欧美激情videos| 国产一区欧美二区三区| 日韩av综合中文字幕| 久久免费在线观看| 日韩中文第一页| 在线精品高清中文字幕| 久久久视频在线| 九九久久国产精品| 亚洲色图偷窥自拍| 亚洲精品视频在线播放| 国产91免费观看| 91精品久久久久久久久中文字幕| 久久精品99久久久久久久久| 久久欧美在线电影| 欧美高清视频在线播放| 久久久久这里只有精品| 亚洲人精品午夜在线观看| 亚洲一区www| 亚洲色图国产精品| 日韩大陆毛片av| 日韩中文字幕网址| 欧美xxxx18性欧美| 欧美日韩免费网站| 日韩精品在线视频| 国内伊人久久久久久网站视频| 亚洲国产婷婷香蕉久久久久久| 在线播放国产精品| 中文字幕在线观看亚洲| 亚洲free性xxxx护士hd| 欧美精品videosex性欧美| 91国内免费在线视频| 国产精品日韩专区| 日韩美女激情视频| 欧美裸体xxxxx| www.亚洲人.com| 久久久国产精彩视频美女艺术照福利| 久久夜色精品亚洲噜噜国产mv| 97久久精品人人澡人人爽缅北| 久久精品久久精品亚洲人| 国产精品久久综合av爱欲tv| 欧美香蕉大胸在线视频观看| 国产精品视频大全| 日韩高清电影好看的电视剧电影| 欧美一级免费视频| 中文字幕综合在线| 国产美女扒开尿口久久久| 国产日韩欧美成人| 久久国产加勒比精品无码| 91sao在线观看国产| 91精品国产91久久久| 国产午夜精品一区二区三区| 亚洲www在线观看| 国产成人极品视频| 日韩免费在线免费观看| 国模吧一区二区三区| 亚洲区免费影片| 97精品欧美一区二区三区| 久久91精品国产91久久跳| 亚洲另类激情图| 亚洲国产精品成人va在线观看| 欧美成人免费小视频| 中文字幕久久精品| 久久免费国产视频| 日韩欧美国产激情| 国产精品高清免费在线观看| 亚洲精品日韩丝袜精品| 国产欧美欧洲在线观看| 国产亚洲欧洲在线| 成人黄色av播放免费| 日韩欧美国产网站| 国产日韩精品视频| 精品国内亚洲在观看18黄| 日韩高清电影好看的电视剧电影| 亚洲人成伊人成综合网久久久| 日韩av网站大全| 不卡av日日日| 国产精品福利网| 欧美丰满少妇xxxxx做受| 国产精品高清免费在线观看| 久久99青青精品免费观看| 欧美视频在线观看免费网址| 日韩视频中文字幕| 日韩av免费在线播放| 国产欧美精品一区二区| 91久久综合亚洲鲁鲁五月天|