日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 午夜看片在线 | 日韩一区二区三区在线观看视频 | 国产在线高潮 | 色哟哟在线观看视频 | 国产二三区 | 欧美日韩中文国产 | 欧美极品jizzhd欧美爆 | 国产精品人妻 | 嫩草影院久久 | 夜夜嗨网站 | 亚洲综合日韩精品欧美综合区 | 最新中文av | 久久久久久久影院 | 青青草免费在线观看视频 | 特黄aaaaaaaaa毛片免 | 浪潮av色| 国产视频精品久久 | 精品视频免费观看 | 久久伊人五月天 | va婷婷| 国产福利一区二区视频 | 国产福利免费 | 久久精品国产亚洲AV无码麻豆 | 可以免费看污视频的网站 | 男女羞羞动态图 | 日韩激情一区二区三区 | 亚洲欧美伦理 | 亚洲国产精品久久AV | 91在线网站 | av大全网站| 懂色aⅴ国产一区二区三区 亚洲欧美国产另类 | 精品免费视频一区二区 | a视频在线观看免费 | 亚洲一级精品 | 中文字幕.com | 五月婷婷导航 | www.日本在线 | 成人国产亚洲 | 国产日韩一区二区三区 | 免费国产视频在线观看 | 四虎国产精品免费 | jlzzjlzz亚洲女人18 | 欧美亚洲激情 | 亚洲成色网 | 永久免费的av网站 | 色国产精品| 久久中文字幕在线 | 意大利性荡欲xxxxxx | 色综合999 | 亚洲综合视频一区 | 金鱼妻日剧免费观看完整版全集 | 国产一区二区三区四区五区美女 | 国产日韩激情 | 狠狠2020| 免费一级片 | 日本午夜啪啪 | 中国av片 | 成人区人妻精品一区二区网站 | 美女尻逼视频 | 中文字幕一区二区人妻在线不卡 | xxxx69国产| 国产伦一区二区 | 九九视频精品在线 | 欧美美女一级片 | 99热热99 | 男生女生操操操 | 伊人国产在线视频 | 亚洲中文字幕一区二区 | www插插 | 成人精品免费在线观看 | 日韩在线激情视频 | 欧美激情视频在线播放 | 久草日韩| jizz免费在线观看 | 黄网站色| 最近国语视频在线观看免费播放 | 娇小激情hdxxxx学生 | 亚洲熟妇无码一区二区三区 | 自拍偷拍第二页 | 高清一二三区 | 日韩一卡二卡在线 | 黄色片网站在线看 | 国产在线一区二区三区四区 | 无码一区二区三区在线 | 看黄色一级 | 欧美一级日韩 | 少妇高潮一区二区三区喷水 | 激情综合网av | 男女午夜影院 | 亚洲私人网站 | 国产一区二区激情视频 | 欧美大片网站 | av福利在线看| 色综合久久久久久久 | 天天操综合 | 黄色网战大全 | 麻豆三级视频 | 日韩av高清在线观看 | 亚洲第一黄色网址 |