日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

动态库的链接和链接选项-L,-rpath-link,-rpath

發布時間:2025/3/15 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态库的链接和链接选项-L,-rpath-link,-rpath 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接動態庫

如何程序在連接時使用了共享庫,就必須在運行的時候能夠找到共享庫的位置。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環境變量查找。

鏈接選項和路徑

現代連接器在處理動態庫時將鏈接時路徑(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指定查找路徑。

鏈接器ld的選項有 -L,-rpath 和 -rpath-link,看了下 man ld,大致是這個意思:

-L: “鏈接”的時候,去找的目錄,也就是所有的 -lFOO 選項里的庫,都會先從 -L 指定的目錄去找,然后是默認的地方。編譯時的-L選項并不影響環境變量LD_LIBRARY_PATH,-L只是指定了程序編譯連接時庫的路徑,并不影響程序執行時庫的路徑,系統還是會到默認路徑下查找該程序所需要的庫,如果找不到,還是會報錯,類似cannot open shared object file。

-rpath-link:這個也是用于“鏈接”的時候的,例如你顯示指定的需要 FOO.so,但是 FOO.so 本身是需要 BAR.so 的,后者你并沒有指定,而是 FOO.so 引用到它,這個時候,會先從 -rpath-link 給的路徑里找。

-rpath: “運行”的時候,去找的目錄。運行的時候,要找 .so 文件,會從這個選項里指定的地方去找。對于交叉編譯,交叉編譯鏈接器需已經配置 –with-sysroot 選項才能起作用。也就是說,-rpath指定的路徑會被記錄在生成的可執行程序中,用于運行時查找需要加載的動態庫。-rpath-link 則只用于鏈接時查找。

鏈接搜索順序

直接man ld。The linker uses the following search paths to locate required shared libraries:

?
1 2 3 4 5 6 7 8 9 1.? Any directories specified by -rpath-link options. ???????2.? Any directories specified by -rpath options.? The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the executable and used at runtime, whereas the -rpath-link option is only effective at link time. Searching -rpath in thisway is only supported by nativelinkers and cross linkers which have been configured with the --with-sysroot option. ???????3.? On an ELF system, fornative linkers, ifthe -rpath and -rpath-link options were not used, search the contents of the environment variable"LD_RUN_PATH". ???????4.? On SunOS, ifthe -rpath option was not used, search any directories specified using -L options. ???????5.? For a nativelinker, the search the contents of the environment variable "LD_LIBRARY_PATH". ???????6.? For a nativeELF linker, the directories in "DT_RUNPATH"or "DT_RPATH"of a shared library are searched forshared libraries needed by it. The "DT_RPATH"entries are ignored if"DT_RUNPATH" entries exist. ???????7.? The defaultdirectories, normally /lib and /usr/lib. ???????8.? For a nativelinker on an ELF system, ifthe file /etc/ld.so.conf exists, the list of directories found in that file. ???????If the required shared library is not found, the linker will issue a warning and continuewith the link.

gcc和鏈接選項的使用

在gcc中使用ld鏈接選項時,需要在選項前面加上前綴-Wl(是字母l,不是1,我曾多次弄錯),以區別不是編譯器的選項。

if the linker is being invoked indirectly, via a compiler driver (e.g. gcc) then all the linker command line options should be prefixed by -Wl, (or whatever is appropriate for the particular compiler driver) like this:

?
1 gcc-Wl,--start-group foo.o bar.o -Wl,--end-group

This is important, because otherwise the compiler driver program may silently drop the linker options, resulting in a bad link.

總結

以上是生活随笔為你收集整理的动态库的链接和链接选项-L,-rpath-link,-rpath的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: av网址在线播放 | 激情免费视频 | 国产精品区在线观看 | 91成人天堂久久成人 | 欧美成人精品欧美一级乱 | 亚洲婷婷在线观看 | 福利电影一区二区三区 | 黄色大片一级 | 亚洲精品91天天久久人人 | 天堂在线 | 黄色av网站免费观看 | 亚洲精品观看 | 国产成人综合欧美精品久久 | 伊人黄色 | 午夜va | 国产成人在线精品 | 国产精品一品二品 | 99热精品国产 | 日韩av网页 | 日韩午夜片 | 摸一摸操一操 | 成人国产精品视频 | 五月婷婷在线观看 | 国产麻豆网 | 亚洲国产91 | 久久九九国产精品 | 香蕉视频在线观看免费 | 亚洲欧美日韩一区二区三区四区 | 91综合精品| 91久精品| 97在线观看视频 | 嫩草嫩草嫩草嫩草 | 国产日韩欧美亚洲 | 操操综合 | 被灌满精子的波多野结衣 | 欧美日韩黄| 少妇高潮一区二区三区喷水 | 欧美91成人网 | 黑丝啪啪 | 国产亚洲精品av | 调教91| www.色就是色 | 欧美天堂 | 中文字幕国产亚洲 | 成人av一区| www.五月激情| 神马久久午夜 | 波多野结衣一区二区三区中文字幕 | 免费一二三区 | 欧美一区二区免费在线观看 | 在线播放不卡 | 九热在线 | 黄色激情毛片 | 午夜福利三级理论电影 | 国产成人av免费观看 | 欲色视频 | 啪啪福利社 | 欧美日韩1区 | 久久午夜激情 | 波多野结衣视频观看 | 亚洲视频图片小说 | 日日骑夜夜操 | 不卡影院av| 91在线精品李宗瑞 | 成人日韩| 国内外免费激情视频 | www.污污| 国产天天综合 | 欧美成人aaaaⅴ片在线看 | 色婷婷aⅴ一区二区三区 | 亚洲精品视频在线观看免费视频 | 色屁屁草草影院ccyycom | av亚洲在线| 久久精品无码毛片 | jizzjizz黄大片 | 国产成人免费视频 | 奇米一区| av一级在线 | 亚洲美女激情视频 | 91精品国产麻豆国产自产在线 | 国产精品免费无码 | 高潮疯狂过瘾粗话对白 | 91中文字日产乱幕4区 | 成人一区二区三区在线 | 成人在线h | 蜜臀av一区 | 精品少妇久久久久久888优播 | 天天干天天爱天天操 | 成人日韩欧美 | 丁香花五月天 | 亚洲久久视频 | 自偷自拍av | 成年人免费在线 | 国产精品无码一本二本三本色 | 欧美激情在线狂野欧美精品 | 亚洲清纯国产 | 亚洲欧洲免费无码 | 牛牛影视一区二区 | 免费看的av网站 |